Fresh IDE . Check-in [15b2e7317d]
Not logged in

This repository is a mirror!

The original is located on: https://fresh.flatassembler.net/fossil/repo/fresh
If you want to follow the project, please update your remote-url

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fixing bugs, after some tests on real Windows 10 system. One of them is very old bug, maybe even from v1 and is related to not destroying dialog forms after close. Also different drawing and resizing problems fixed.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:15b2e7317d2c14ae38b8c3beec608be87de5cdb4
User & Date: johnfound 2017-10-27 11:00:14
Context
2017-10-27
12:22
"New Application" dialog redesigned with split grid. check-in: 66d068a8fc user: johnfound tags: trunk
11:00
Fixing bugs, after some tests on real Windows 10 system. One of them is very old bug, maybe even from v1 and is related to not destroying dialog forms after close. Also different drawing and resizing problems fixed. check-in: 15b2e7317d user: johnfound tags: trunk
2017-10-26
17:21
Small fix in the FASM.rhtm help file. check-in: bd3fd2aa44 user: johnfound tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to WhatsNew.txt.

1
2






















3
4
5
6
7
8
9
This file describes the changes in every new release version of Fresh IDE
The date format: DD.MM.YYYY























version 2.5.1 (19.12.2016)

    [+] Removed the dependency on google for the web search. Now the web 
        search engine is user selectable. The default is duckduckgo.com
    [+] FASM compiled has been updated to v1.71.58
    [+] Added an example for using FreshLib for simple graphics drawing.


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
This file describes the changes in every new release version of Fresh IDE
The date format: DD.MM.YYYY

This file contains only a brief notes about changes from version to version and only for the official releases.
As long as the file is created by hand, some information (even important) can be missed or not accurate.

For very detailed and accurate information about the changes, see the timeline in the source code repository:
 
https://fresh.flatassembler.net/fossil/repo/fresh/timeline


version 2.6.0 (27.10.2017)

Because of FASM milestone version v1.72 and because of big time passed since the last official release, I decided to switch directly
to v2.6.0; For detailed information about the changes, see the 

    [+] Brand new design of the GUI with two themes (for dark and for light OS theme) and adjustable icon sizes for the menus and toolbars.
    [+] The latest milestone FASM version: v1.72
    [+] Updated FreshLib to the latest FreshLibDev, bugfixed and improved.
    [+] Updated the FASM manual to the latest version.
    [+] Added a new help book about the assembly instructions with detailed explanation and useful information.
    [+] Improved code completion search algorithm in order to hit the proper name with less typing.
    [+] Wide use of PNG images for all icons that make the icons better quality and the size of the executable smaller.
    [-] Bugfixes.

version 2.5.1 (19.12.2016)

    [+] Removed the dependency on google for the web search. Now the web 
        search engine is user selectable. The default is duckduckgo.com
    [+] FASM compiled has been updated to v1.71.58
    [+] Added an example for using FreshLib for simple graphics drawing.

Changes to include/libs/SplitGrid2.asm.

1157
1158
1159
1160
1161
1162
1163
1164







1165
1166
1167
1168
1169
1170
1171
        je      .resize

        cmp     [.wparam], SIZE_MAXIMIZED
        jne     .ondefault

.resize:
        invoke  SendMessageW, [.hwnd], SGM_REALIGN, 0, 0








        stc
        return


;------------------------------------------------------------------------

oncase SGM_REALIGN







<
>
>
>
>
>
>
>







1157
1158
1159
1160
1161
1162
1163

1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
        je      .resize

        cmp     [.wparam], SIZE_MAXIMIZED
        jne     .ondefault

.resize:
        invoke  SendMessageW, [.hwnd], SGM_REALIGN, 0, 0

        invoke  SendMessageW, [.hwnd], SGM_REALIGN, 0, 0        ; solves the problem with toolbar bad autosizing in Windows 10.
                                                                ; actually, the problem is more serious and need to be fixed
                                                                ; in FreshLib in better way. The exact problem is that
                                                                ; after the first resize, the toolbar can change its button
                                                                ; placement and then it's size as well. In WINE everithing works,
                                                                ; probably because it sends several WM_SIZE messages. But in Windows
                                                                ; it is not the case.
        stc
        return


;------------------------------------------------------------------------

oncase SGM_REALIGN

Changes to include/libs/gui.asm.

617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
...
714
715
716
717
718
719
720
721
722



723
724
725
726
727
728
729
730
731
732
733
        invoke  CreateWindowExW, esi, cToolbarClassName, NULL,          \
                                WS_CHILD or                             \
                                WS_VISIBLE or WS_CLIPSIBLINGS or        \
                                TBSTYLE_TRANSPARENT or                  \
                                TBSTYLE_FLAT or                         \
                                TBSTYLE_TOOLTIPS or                     \
                                TBSTYLE_WRAPABLE or                     \
                                CCS_NOPARENTALIGN or CCS_NORESIZE,      \
                                esi, esi, 10000, esi,                     \
                                [.ParentWindow], [.ToolbarID],          \
                                edi, NULL
        mov     ebx,eax
        stdcall SubclassWindow, ebx, CoolToolbarProc

        invoke  SendMessageW, ebx, TB_BUTTONSTRUCTSIZE, TToolbarButton.size, esi

................................................................................
.ondefault:

        stc
        return

oncase SGM_AUTOSIZE

;        invoke  SendMessageW, [.hwnd], TB_AUTOSIZE, 0, 0
        stdcall __ComputeToolbarSize, [.hwnd]




        push    eax edx

        invoke  SetWindowPos, [.hwnd], 0, 0, 0, eax, edx, SWP_NOZORDER



        pop     edx eax
        and     eax, $ffff
        shl     edx, 16
        or      eax, edx







|
|







 







|

>
>
>



|







617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
...
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
        invoke  CreateWindowExW, esi, cToolbarClassName, NULL,          \
                                WS_CHILD or                             \
                                WS_VISIBLE or WS_CLIPSIBLINGS or        \
                                TBSTYLE_TRANSPARENT or                  \
                                TBSTYLE_FLAT or                         \
                                TBSTYLE_TOOLTIPS or                     \
                                TBSTYLE_WRAPABLE or                     \
                                CCS_NOPARENTALIGN or CCS_NORESIZE or CCS_NODIVIDER,      \
                                esi, esi, esi, esi,                   \
                                [.ParentWindow], [.ToolbarID],          \
                                edi, NULL
        mov     ebx,eax
        stdcall SubclassWindow, ebx, CoolToolbarProc

        invoke  SendMessageW, ebx, TB_BUTTONSTRUCTSIZE, TToolbarButton.size, esi

................................................................................
.ondefault:

        stc
        return

oncase SGM_AUTOSIZE

        invoke  SendMessageW, [.hwnd], TB_AUTOSIZE, 0, 0
        stdcall __ComputeToolbarSize, [.hwnd]

        OutputValue "Toolbar  width: ", eax, 10, -1
        OutputValue "Toolbar height: ", edx, 10, -1

        push    eax edx

;        invoke  SetWindowPos, [.hwnd], 0, 0, 0, eax, edx, SWP_NOZORDER



        pop     edx eax
        and     eax, $ffff
        shl     edx, 16
        or      eax, edx

Changes to include/libs/pnglib.asm.

109
110
111
112
113
114
115
























116
117
118
119
120
121
122
; Arguments:
;   .pPNGImage - pointer to memory, where compressed image resides.
;   .size      - size of the image in bytes.
;
; Returns:
;   CF=1 if error;
;   CF=0 and eax=TImage if success.

























proc CreateImagePNG, .pPNGImage, .size

  .pEnd          dd ?

  .start:








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
; Arguments:
;   .pPNGImage - pointer to memory, where compressed image resides.
;   .size      - size of the image in bytes.
;
; Returns:
;   CF=1 if error;
;   CF=0 and eax=TImage if success.

proc CreateImagePNGFromFile, .hFilename
begin
        pushad
        stdcall LoadBinaryFile, [.hFilename]
        jc      .finish

        mov     esi, eax

        stdcall CreateImagePNG, esi, ecx
        jc      .free

        mov     [esp+4*regEAX], eax

.free:
        pushf
        stdcall FreeMem, esi
        popf

.finish:
        popad
        return
endp


proc CreateImagePNG, .pPNGImage, .size

  .pEnd          dd ?

  .start:

Changes to source/MainWindow.asm.

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
...
629
630
631
632
633
634
635
636

637
638
639
640
641
642
643

;  macro Split type, width, pos, min, max \{
;   macro Cell name \{

  SplitStart MainLayout
    Split stVert or stJustGap or stAutosize, 2, 100, 0, 1000
      Cell cellMainToolbar                                ; main toolbar
      Split stVert or stJustGap, 2, 64, 0, 64
        Cell cellPalette                                  ; components palette
        Split stHoriz, 4, 200, 32, 600                    ; left/right pane of the window.
          Split stVert or stRelative, 4, 10000, 0, 32768  ; up - properties; down - project manager.
            Cell cellPropEditor
            Cell cellProjectManager
          Split stVert or stOriginBR or stHidden, 4, 100, 0, 600
            Split stVert or stOriginBR or stJustGap, 0, 22, 22, 22
................................................................................
        mov     [hReopenMenu], eax

; Create the main toolbar
        stdcall CreateCoolToolbar, MainActionList, MainToolbar, [.hwnd], $2000
        mov     [hMainToolbar],eax

        stdcall AttachToCell, [hMainToolbar], [.hwnd], MainLayout.cellMainToolbar
        stdcall AttachToCell, [hMainToolbar], [.hwnd], 0


; Set Main window icon.

        invoke  LoadImageW, [hInstance], resAppIcon, IMAGE_ICON, 16, 16, LR_SHARED
        invoke  SendMessageW, [.hwnd], WM_SETICON, ICON_SMALL, eax

        invoke  LoadImageW, [hInstance], resAppIcon, IMAGE_ICON, 32, 32, LR_SHARED







|







 







|
>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
...
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644

;  macro Split type, width, pos, min, max \{
;   macro Cell name \{

  SplitStart MainLayout
    Split stVert or stJustGap or stAutosize, 2, 100, 0, 1000
      Cell cellMainToolbar                                ; main toolbar
      Split stVert or stJustGap, 2, 64, 0, 1000
        Cell cellPalette                                  ; components palette
        Split stHoriz, 4, 200, 32, 600                    ; left/right pane of the window.
          Split stVert or stRelative, 4, 10000, 0, 32768  ; up - properties; down - project manager.
            Cell cellPropEditor
            Cell cellProjectManager
          Split stVert or stOriginBR or stHidden, 4, 100, 0, 600
            Split stVert or stOriginBR or stJustGap, 0, 22, 22, 22
................................................................................
        mov     [hReopenMenu], eax

; Create the main toolbar
        stdcall CreateCoolToolbar, MainActionList, MainToolbar, [.hwnd], $2000
        mov     [hMainToolbar],eax

        stdcall AttachToCell, [hMainToolbar], [.hwnd], MainLayout.cellMainToolbar
        stdcall AttachToCell, [hMainToolbar], [.hwnd], 0        ; This is the parent split of MainLayout.cellMainToolbar cell.
                                                                ; This double assignment needs some fix, but not now and here. :)

; Set Main window icon.

        invoke  LoadImageW, [hInstance], resAppIcon, IMAGE_ICON, 16, 16, LR_SHARED
        invoke  SendMessageW, [.hwnd], WM_SETICON, ICON_SMALL, eax

        invoke  LoadImageW, [hInstance], resAppIcon, IMAGE_ICON, 32, 32, LR_SHARED

Changes to source/findreplace.asm.

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26



27
28
29
30
31
32
33
34
35
36
37
38

39
40
41
42
43

44
45
46
47
48




49
50
51
52
53
54
55
...
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
...
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542

include "findreplace.inc"

; actFindFirst action handler
proc OnFindFirst, .wparam, .lparam
begin
        push    ebx
        stdcall CreateForm, FindDialog, [hEditorsHost]
        or      ebx,ebx
        jz      .finish

        stdcall SetFindOptions, ebx
        invoke  SendMessageW, ebx, WM_INITDIALOG, 0, 0

        stdcall ShowModal, ebx, MSF_CENTER
        cmp     eax, MR_OK
        jne     .finish

        stdcall GetFindOptions, ebx
        invoke  DestroyWindow, ebx
        mov     [FindOptions.search_type], 1

        stdcall AddStringToHistory, FindOptions.search_strw
        call    FindReplace




  .finish:
        pop     ebx
        return
endp

; actReplace action handler
proc OnReplace, .wparam, .lparam
        begin
        push    ebx
        stdcall CreateForm, ReplaceDialog, [hEditorsHost]
        or      ebx,ebx
        jz      .finish

        stdcall SetFindOptions, ebx
        invoke  SendMessageW, ebx, WM_INITDIALOG, 0, 0
        stdcall ShowModal, ebx,MSF_CENTER
        cmp     eax,MR_OK
        jne     .finish

        stdcall GetFindOptions, ebx
        invoke  DestroyWindow, ebx
        mov     [FindOptions.search_type],2
        stdcall AddStringToHistory, FindOptions.search_strw
        call    FindReplace




  .finish:
        pop     ebx
        return
endp

; actFindNext action handler
proc OnFindNext, .wparam, .lparam
................................................................................
        stc
        return
endp


; sets members of FindOptions structure corresponding to given find (replace) dialog
proc GetFindOptions, .hwnd
        begin
        push    eax ebx
        invoke  IsDlgButtonChecked, [.hwnd],fdlgCaseSensitiveCheckID
        mov     [FindOptions.case_sensitive],eax
        invoke  IsDlgButtonChecked, [.hwnd],fdlgWholeWordsCheckID
        mov     [FindOptions.whole_words],eax
        invoke  GetDlgItem, [.hwnd],fdlgPromptOnReplaceCheckID
        or      eax,eax
................................................................................
        jz      @f
        jmp     .range_ok
    @@: inc     ebx
    .range_ok:
        mov     [FindOptions.range],ebx
        invoke  GetDlgItemTextW, [.hwnd], fdlgTextEditID, FindOptions.search_strw, fdlgMaxFindStrLen
        invoke  GetDlgItemTextW, [.hwnd], fdlgReplaceTextEditID, FindOptions.replace_strw, fdlgMaxFindStrLen
        pop     edx eax
        return
endp

; setup given find (replace) dialog corresponding to FindOptions structure
proc SetFindOptions, .hwnd
.str rw 256
begin







|








|


<





>
>
>









|


>




|
>

<



>
>
>
>







 







|







 







|







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
56
57
58
59
60
61
62
...
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
...
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549

include "findreplace.inc"

; actFindFirst action handler
proc OnFindFirst, .wparam, .lparam
begin
        push    ebx
        stdcall CreateForm, FindDialog, [hMainForm]
        or      ebx,ebx
        jz      .finish

        stdcall SetFindOptions, ebx
        invoke  SendMessageW, ebx, WM_INITDIALOG, 0, 0

        stdcall ShowModal, ebx, MSF_CENTER
        cmp     eax, MR_OK
        jne     .free

        stdcall GetFindOptions, ebx

        mov     [FindOptions.search_type], 1

        stdcall AddStringToHistory, FindOptions.search_strw
        call    FindReplace

  .free:
        invoke  DestroyWindow, ebx

  .finish:
        pop     ebx
        return
endp

; actReplace action handler
proc OnReplace, .wparam, .lparam
        begin
        push    ebx
        stdcall CreateForm, ReplaceDialog, [hMainForm]
        or      ebx,ebx
        jz      .finish

        stdcall SetFindOptions, ebx
        invoke  SendMessageW, ebx, WM_INITDIALOG, 0, 0
        stdcall ShowModal, ebx,MSF_CENTER
        cmp     eax,MR_OK
        jne     .free

        stdcall GetFindOptions, ebx

        mov     [FindOptions.search_type],2
        stdcall AddStringToHistory, FindOptions.search_strw
        call    FindReplace

  .free:
        invoke  DestroyWindow, ebx

  .finish:
        pop     ebx
        return
endp

; actFindNext action handler
proc OnFindNext, .wparam, .lparam
................................................................................
        stc
        return
endp


; sets members of FindOptions structure corresponding to given find (replace) dialog
proc GetFindOptions, .hwnd
begin
        push    eax ebx
        invoke  IsDlgButtonChecked, [.hwnd],fdlgCaseSensitiveCheckID
        mov     [FindOptions.case_sensitive],eax
        invoke  IsDlgButtonChecked, [.hwnd],fdlgWholeWordsCheckID
        mov     [FindOptions.whole_words],eax
        invoke  GetDlgItem, [.hwnd],fdlgPromptOnReplaceCheckID
        or      eax,eax
................................................................................
        jz      @f
        jmp     .range_ok
    @@: inc     ebx
    .range_ok:
        mov     [FindOptions.range],ebx
        invoke  GetDlgItemTextW, [.hwnd], fdlgTextEditID, FindOptions.search_strw, fdlgMaxFindStrLen
        invoke  GetDlgItemTextW, [.hwnd], fdlgReplaceTextEditID, FindOptions.replace_strw, fdlgMaxFindStrLen
        pop     ebx eax
        return
endp

; setup given find (replace) dialog corresponding to FindOptions structure
proc SetFindOptions, .hwnd
.str rw 256
begin

Changes to source/palette.asm.

84
85
86
87
88
89
90












91
92
93
94
95
96
97
...
301
302
303
304
305
306
307

308
309
310
311
312

313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
...
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484

485
486
487
488
489
490
491
492
begin
        dispatch [.wmsg]

.ondefault:
        stc
        return














oncase SGM_REALIGN

        invoke  GetPropW, [.hwnd], [propSplitGrid]
        test    eax, eax
        jz      .ondefault

................................................................................

        jc      .finish

        dec     [.index]
        jns     .find

.createnew:

        xor     esi, esi
        invoke  CreateWindowExW, esi, cToolbarClassName, NULL,    \
                                WS_CHILD or WS_CLIPSIBLINGS or    \
                                TBSTYLE_TRANSPARENT or            \
                                TBSTYLE_FLAT or                   \

                                TBSTYLE_TOOLTIPS or               \
                                CCS_NODIVIDER or                  \
                                CCS_NORESIZE or CCS_NOPARENTALIGN, \
                                esi, 16, 10000, 24,               \
                                [hToolPalette], esi, [hInstance], \
                                esi
        mov     ebx, eax

        invoke  SendMessageW, ebx, TB_BUTTONSTRUCTSIZE, TToolbarButton.size, esi

;        stdcall ImageList_LoadPNG, [GUI.imgSelectTool], FALSE
;        mov     esi, eax

        invoke  ImageList_Create, 24, 24, ILC_COLOR32, 0, 1
        mov     esi, eax

        stdcall IconFromImage, [GUI.imgSelectTool]
        push    eax

;        invoke  LoadImageW, [hInstance], resArrowIcon, IMAGE_ICON, 24, 24, LR_DEFAULTCOLOR
;        push    eax

        invoke  ImageList_AddIcon, esi, eax
        invoke  DestroyIcon     ; eax is in the stack

        invoke  SendMessageW, ebx, TB_SETIMAGELIST, 0, esi
        invoke  SendMessageW, ebx, TB_SETBITMAPSIZE, 0, $00180018

; make tooltip to appear on not active main window.
        invoke  SendMessageW, ebx, TB_GETTOOLTIPS, 0, 0
        mov     esi, eax
................................................................................
.createbuttons:
        cmp     dword [edi], 0
        je      .endcreate

        stdcall GetPaletteToolbar, [edi+TDesignTimeInfo.Palette]
        mov     ebx, eax        ; handle for toolbar.

        stdcall LoadBinaryFile, [edi+TDesignTimeInfo.ImageFile]
        push    eax
        stdcall CreateImagePNG, eax, ecx
        pop     ecx
        pushf
        stdcall FreeMem, ecx
        popf
        jc      .error_image

        push    eax
        stdcall IconFromImage, eax
        stdcall DestroyImage ; from the stack

        test    eax, eax
        jz      .error_image

        mov     esi, eax

        invoke  SendMessageW, ebx, TB_GETIMAGELIST, 0, 0
        invoke  ImageList_ReplaceIcon, eax, -1, esi
        mov     [.tbb.iBitmap], eax
        mov     [.tbb.idCommand], eax

        invoke  DestroyIcon, esi

        mov     [.tbb.fsState], TBSTATE_ENABLED
        mov     [.tbb.fsStyle], TBSTYLE_CHECKGROUP

        mov     [.tbb.dwData], edi
        cmp     [.ffirst], 0
        je      @f







>
>
>
>
>
>
>
>
>
>
>
>







 







>



<

>










<
<
<



|
<
<
<
<
<
|
<







 







|
<
<
<
<
<
<


<
<
<
<
<
<
<



|


>
|







84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
...
313
314
315
316
317
318
319
320
321
322
323

324
325
326
327
328
329
330
331
332
333
334
335



336
337
338
339





340

341
342
343
344
345
346
347
...
460
461
462
463
464
465
466
467






468
469







470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
begin
        dispatch [.wmsg]

.ondefault:
        stc
        return

oncase WM_ERASEBKGND

        lea     esi, [.rect]
        invoke  GetClientRect, [.hwnd], esi
        invoke  GetSysColorBrush, COLOR_BTNFACE
        invoke  FillRect, [.wparam], esi, eax

        clc
        xor     eax, eax
        inc     eax
        return


oncase SGM_REALIGN

        invoke  GetPropW, [.hwnd], [propSplitGrid]
        test    eax, eax
        jz      .ondefault

................................................................................

        jc      .finish

        dec     [.index]
        jns     .find

.createnew:

        xor     esi, esi
        invoke  CreateWindowExW, esi, cToolbarClassName, NULL,    \
                                WS_CHILD or WS_CLIPSIBLINGS or    \

                                TBSTYLE_FLAT or                   \
                                TBSTYLE_TRANSPARENT or            \
                                TBSTYLE_TOOLTIPS or               \
                                CCS_NODIVIDER or                  \
                                CCS_NORESIZE or CCS_NOPARENTALIGN, \
                                esi, 16, 10000, 24,               \
                                [hToolPalette], esi, [hInstance], \
                                esi
        mov     ebx, eax

        invoke  SendMessageW, ebx, TB_BUTTONSTRUCTSIZE, TToolbarButton.size, esi




        invoke  ImageList_Create, 24, 24, ILC_COLOR32, 0, 1
        mov     esi, eax

        mov     eax, [GUI.imgSelectTool]





        invoke  ImageList_Add, esi, [eax+TImage.hBitmap], 0


        invoke  SendMessageW, ebx, TB_SETIMAGELIST, 0, esi
        invoke  SendMessageW, ebx, TB_SETBITMAPSIZE, 0, $00180018

; make tooltip to appear on not active main window.
        invoke  SendMessageW, ebx, TB_GETTOOLTIPS, 0, 0
        mov     esi, eax
................................................................................
.createbuttons:
        cmp     dword [edi], 0
        je      .endcreate

        stdcall GetPaletteToolbar, [edi+TDesignTimeInfo.Palette]
        mov     ebx, eax        ; handle for toolbar.

        stdcall CreateImagePNGFromFile, [edi+TDesignTimeInfo.ImageFile]






        jc      .error_image








        mov     esi, eax

        invoke  SendMessageW, ebx, TB_GETIMAGELIST, 0, 0
        invoke  ImageList_Add, eax, [esi+TImage.hBitmap], 0
        mov     [.tbb.iBitmap], eax
        mov     [.tbb.idCommand], eax

        stdcall DestroyImage, esi

        mov     [.tbb.fsState], TBSTATE_ENABLED
        mov     [.tbb.fsStyle], TBSTYLE_CHECKGROUP

        mov     [.tbb.dwData], edi
        cmp     [.ffirst], 0
        je      @f

Changes to source/sourceeditor.asm.

71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

        stdcall IconFromImage, [GUI.imgEditorBmk]
        mov     [hBookmarkIcon], eax

        stdcall IconFromImage, [GUI.imgEditorBmk+8]
        mov     [hBookmarkIcon+4], eax

;        invoke  LoadImageW, [hInstance], resBookmarkIcon, IMAGE_ICON, 0, 0, LR_SHARED

; Load editor color profile...
        stdcall LoadEditorSettings, [hCfgFileName], TRUE
        mov     [CurrentSettings], eax
        return
endp









<
<







71
72
73
74
75
76
77


78
79
80
81
82
83
84

        stdcall IconFromImage, [GUI.imgEditorBmk]
        mov     [hBookmarkIcon], eax

        stdcall IconFromImage, [GUI.imgEditorBmk+8]
        mov     [hBookmarkIcon+4], eax



; Load editor color profile...
        stdcall LoadEditorSettings, [hCfgFileName], TRUE
        mov     [CurrentSettings], eax
        return
endp


Changes to source/version.inc.

1
2
3
4
5
6
7
8
9
10
11
FRESH_VERSION equ 'v2.5.1'
FRESH_MAJOR = 2
FRESH_MINOR = 5
FRESH_WORK  = 1

macro months [dayscount]
{
  forward
   if DAY > dayscount
    DAY = DAY-dayscount
    MONTH = MONTH+1
|

|
|







1
2
3
4
5
6
7
8
9
10
11
FRESH_VERSION equ 'v2.6.0'
FRESH_MAJOR = 2
FRESH_MINOR = 6
FRESH_WORK  = 0

macro months [dayscount]
{
  forward
   if DAY > dayscount
    DAY = DAY-dayscount
    MONTH = MONTH+1