From e9c6de2700aa804cadb5990790b8f18315ddd2e2 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sat, 31 Jan 2015 13:08:08 +0100 Subject: [PATCH 1/5] minor TODO detection improvement --- cetodo/cetodo.d | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cetodo/cetodo.d b/cetodo/cetodo.d index 269c34e2..6f1de5ee 100644 --- a/cetodo/cetodo.d +++ b/cetodo/cetodo.d @@ -161,11 +161,13 @@ void main(string[] args) // "TODO" while (true) { if (pos == text.length) break; - auto upIdent = identifier.strip.toUpper; - if (upIdent == "TODO" || upIdent == "FIXME"){ - isTodoComment = true; - text = text[pos..$]; - break; + if (identifier.length > 3) { + auto upIdent = identifier.strip.toUpper; + if (upIdent == "TODO" || upIdent == "FIXME"){ + isTodoComment = true; + text = text[pos..$]; + break; + } } identifier ~= text[pos++]; } From f211d3533f954121962ffbd3b9028e65c33a5076 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sat, 31 Jan 2015 14:44:44 +0100 Subject: [PATCH 2/5] fix, bug described in bdc7626b26e9dc832b8d58966620099421685136, focus event, too much updates. the docFocused event is still called but the observers does not always perform their updates --- src/ce_editor.pas | 2 +- src/ce_messages.pas | 2 ++ src/ce_search.pas | 57 ++++++++++++++++++++------------------- src/ce_staticexplorer.pas | 1 + src/ce_staticmacro.pas | 1 + src/ce_todolist.pas | 2 ++ 6 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 32aa4e75..67c41667 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -186,6 +186,7 @@ end; procedure TCEEditorWidget.docFocused(aDoc: TCESynMemo); begin + if aDoc = fDoc then exit; fDoc := aDoc; focusedEditorChanged; beginUpdateByDelay; @@ -234,7 +235,6 @@ begin macRecorder.Editor := fDoc; fSyncEdit.Editor := fDoc; completion.Editor := fDoc; - //TODO-cbugfix: prevent completion to steal the focus, this trigs too much updates after Ctrl+Space if (pageControl.ActivePage.Caption = '') then begin fKeyChanged := true; diff --git a/src/ce_messages.pas b/src/ce_messages.pas index b7992353..15a1bf61 100644 --- a/src/ce_messages.pas +++ b/src/ce_messages.pas @@ -364,6 +364,7 @@ end; procedure TCEMessagesWidget.projFocused(aProject: TCEProject); begin + if fProj = aProject then exit; fProj := aProject; filterMessages(fCtxt); end; @@ -394,6 +395,7 @@ end; procedure TCEMessagesWidget.docFocused(aDoc: TCESynMemo); begin + if fDoc = aDoc then exit; fDoc := aDoc; filterMessages(fCtxt); end; diff --git a/src/ce_search.pas b/src/ce_search.pas index 15c790ea..4e37deae 100644 --- a/src/ce_search.pas +++ b/src/ce_search.pas @@ -29,7 +29,7 @@ type procedure cbToFindChange(Sender: TObject); procedure chkEnableRepChange(Sender: TObject); private - fEditor: TCESynMemo; + fDoc: TCESynMemo; fToFind: string; fReplaceWth: string; fActFindNext, fActReplaceNext: TAction; @@ -187,28 +187,28 @@ end; procedure TCESearchWidget.actFindNextExecute(sender: TObject); begin - if fEditor = nil then exit; + if fDoc = nil then exit; // fSearchMru.Insert(0,fToFind); if not chkFromCur.Checked then begin if chkBack.Checked then - fEditor.CaretXY := Point(high(Integer), high(Integer)) + fDoc.CaretXY := Point(high(Integer), high(Integer)) else begin if not fHasRestarted then - fEditor.CaretXY := Point(0,0); + fDoc.CaretXY := Point(0,0); fHasRestarted := true; end; end else if fHasSearched then begin if chkBack.Checked then - fEditor.CaretX := fEditor.CaretX - 1 + fDoc.CaretX := fDoc.CaretX - 1 else - fEditor.CaretX := fEditor.CaretX + length(fToFind); + fDoc.CaretX := fDoc.CaretX + length(fToFind); end; - if fEditor.SearchReplace(fToFind, '', getOptions) = 0 then + if fDoc.SearchReplace(fToFind, '', getOptions) = 0 then dlgOkInfo('the expression cannot be found') else begin @@ -221,29 +221,29 @@ end; procedure TCESearchWidget.actReplaceNextExecute(sender: TObject); begin - if fEditor = nil then exit; + if fDoc = nil then exit; // fSearchMru.Insert(0, fToFind); fReplaceMru.Insert(0, fReplaceWth); if chkPrompt.Checked then - fEditor.OnReplaceText := @replaceEvent; + fDoc.OnReplaceText := @replaceEvent; if not chkFromCur.Checked then begin if chkBack.Checked then - fEditor.CaretXY := Point(high(Integer), high(Integer)) + fDoc.CaretXY := Point(high(Integer), high(Integer)) else - fEditor.CaretXY := Point(0,0); + fDoc.CaretXY := Point(0,0); end else if fHasSearched then begin if chkBack.Checked then - fEditor.CaretX := fEditor.CaretX - 1 + fDoc.CaretX := fDoc.CaretX - 1 else - fEditor.CaretX := fEditor.CaretX + length(fToFind); + fDoc.CaretX := fDoc.CaretX + length(fToFind); end; - if fEditor.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then + if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then fHasSearched := true; - fEditor.OnReplaceText := nil; + fDoc.OnReplaceText := nil; UpdateByEvent; end; @@ -251,17 +251,17 @@ procedure TCESearchWidget.actReplaceAllExecute(sender: TObject); var opts: TSynSearchOptions; begin - if fEditor = nil then exit; + if fDoc = nil then exit; opts := getOptions + [ssoReplace]; opts -= [ssoBackwards]; // fSearchMru.Insert(0, fToFind); fReplaceMru.Insert(0, fReplaceWth); - if chkPrompt.Checked then fEditor.OnReplaceText := @replaceEvent; - fEditor.CaretXY := Point(0,0); + if chkPrompt.Checked then fDoc.OnReplaceText := @replaceEvent; + fDoc.CaretXY := Point(0,0); while(true) do begin - if fEditor.SearchReplace(fToFind, fReplaceWth, opts) = 0 + if fDoc.SearchReplace(fToFind, fReplaceWth, opts) = 0 then break; if fCancelAll then begin @@ -269,7 +269,7 @@ begin break; end; end; - fEditor.OnReplaceText := nil; + fDoc.OnReplaceText := nil; UpdateByEvent; end; {$ENDREGION} @@ -277,19 +277,20 @@ end; {$REGION ICEMultiDocObserver ---------------------------------------------------} procedure TCESearchWidget.docNew(aDoc: TCESynMemo); begin - fEditor := aDoc; + fDoc := aDoc; UpdateByEvent; end; procedure TCESearchWidget.docClosing(aDoc: TCESynMemo); begin - if fEditor = aDoc then fEditor := nil; + if fDoc = aDoc then fDoc := nil; UpdateByEvent; end; procedure TCESearchWidget.docFocused(aDoc: TCESynMemo); begin - fEditor := aDoc; + if fDoc = aDoc then exit; + fDoc := aDoc; UpdateByEvent; end; @@ -321,11 +322,11 @@ end; procedure TCESearchWidget.UpdateByEvent; begin - fActFindNext.Enabled := fEditor <> nil; - fActReplaceNext.Enabled := (fEditor <> nil) and (chkEnableRep.Checked); - fActReplaceAll.Enabled := (fEditor <> nil) and (chkEnableRep.Checked); - cbReplaceWth.Enabled := (fEditor <> nil) and (chkEnableRep.Checked); - cbToFind.Enabled := fEditor <> nil; + fActFindNext.Enabled := fDoc <> nil; + fActReplaceNext.Enabled := (fDoc <> nil) and (chkEnableRep.Checked); + fActReplaceAll.Enabled := (fDoc <> nil) and (chkEnableRep.Checked); + cbReplaceWth.Enabled := (fDoc <> nil) and (chkEnableRep.Checked); + cbToFind.Enabled := fDoc <> nil; // cbToFind.Items.Assign(fSearchMru); cbReplaceWth.Items.Assign(fReplaceMru); diff --git a/src/ce_staticexplorer.pas b/src/ce_staticexplorer.pas index c440e30c..ac68b234 100644 --- a/src/ce_staticexplorer.pas +++ b/src/ce_staticexplorer.pas @@ -286,6 +286,7 @@ end; procedure TCEStaticExplorerWidget.docFocused(aDoc: TCESynMemo); begin + if fDoc = aDoc then exit; fDoc := aDoc; if not Visible then exit; // diff --git a/src/ce_staticmacro.pas b/src/ce_staticmacro.pas index d2513d3a..4d033d47 100644 --- a/src/ce_staticmacro.pas +++ b/src/ce_staticmacro.pas @@ -128,6 +128,7 @@ end; procedure TCEStaticEditorMacro.docFocused(aDoc: TCESynMemo); begin + if fDoc = aDoc then exit; fDoc := aDoc; fCompletor.Editor := fDoc; end; diff --git a/src/ce_todolist.pas b/src/ce_todolist.pas index 35020ae3..c57390a7 100644 --- a/src/ce_todolist.pas +++ b/src/ce_todolist.pas @@ -204,6 +204,7 @@ end; procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo); begin + if aDoc = fDoc then exit; fDoc := aDoc; if Visible then callToolProcess; @@ -244,6 +245,7 @@ end; procedure TCETodoListWidget.projFocused(aProject: TCEProject); begin + if aProject = fProj then exit; fProj := aProject; if Visible then callToolProcess; From fc69c42d5d261d99bc9da384143f1d3a4116c2cf Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 1 Feb 2015 01:47:58 +0100 Subject: [PATCH 3/5] updated icons --- icons/arrow/arrow_pen.png | Bin 0 -> 1652 bytes src/ce_icons.inc | 45 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 icons/arrow/arrow_pen.png diff --git a/icons/arrow/arrow_pen.png b/icons/arrow/arrow_pen.png new file mode 100644 index 0000000000000000000000000000000000000000..2105335cec948df5e6fd2e4bb6ccb4fcfa6d929d GIT binary patch literal 1652 zcmaJ?dr%a096t~YP#Pc|1SQv#90R%Cz2ly6*gfHp!}B-;iGby9;TG84b8qnubmTEW z!`L90-1xvEA_FWGd}UOQfUnFn@db=p_9mL+J;alOJ*XoP(XttIj9~*Oof{- zqR}kYJPb3W&?(vkiIK!PhzrB9;}(X^VnwgDTM%O&N&{JF4n|1X4?9n@0n8+2C-b$C z)}lboSX>c>CKV+bj751yv5CDl28gyx7y%rm5x|b;6IO{`%AV4dFmu;7$Ofh$be@#` z!l@Lk4p5L33h+5lgb@-zfB@#eyhx!?xCY=tFa$ze5avd}LJ5y6fgoV|VKde!Q?^8} zR8QMtR#LW^rY#Z>wApMN8;?U$IUp<+i(MLAZUlpfuoe;}kp;Ar&3O7E1l*#>a?G@KR-CX-CyPlNXh$p{%z;2^3ge1zhNacMoPp!BXe+Hp z|8xF-^{s|N3kvE{D_KApnJQ+loMY6tJ4B67hK4NSRU%!!ns%q~P7+daNy-1O;(oufth*wu=nY@hB@pQUo9lNIK!i|{6 zD`Z{A%2LDjty^O><(k{L{Y`5{i=R99z@GRgllMnQ2M7AP>P7cUyT$d7{vLc94T7GH zt;R)-b-TkdlVd8Hw1;dvGwM`N2GmBvt9jCU$#Cfg|E$%;BdMbJpk5ypUYVY8*X{R0 z=hd$~Dslm_cvbz`j{KH>;&A5ha7}Xh_S@lJBQ1*;U_L<9(m3soQXi2s#ZcdSvyU&> z?@OIpc0epXh@Z)v7qUH>aHAIZz2lL+DXp!oB|NC8efhw~^$l+yD)=pHbB;sFRoT+q zR>uRi*DJ@Wk|qMGjkSCCRt>&#>dLm5evx8B5--5p>>R4=hPubwkBs@gc5i*`(cR|Z z!XHQKpo!umS4Ju?{TVWR>s@10!w+xv3BNvm%xi_fLvW!d&d;;+&W^EXY4*M$#1Vh> z%heIfia4XP3I7sr59d=m(C?L=+7asI}*=kqst_bS1y7W(0tqh}|jmoo+zE*;wSG_hsj@aZq^ zJ`3YK{w#8RbOoMpf>t@ldwRA^RLYt&wgjH6aXkKDkAH{z(#wwXzxW8hkFPd%l$Spl cyF '#31#129'@+'#0#0#2#161 + +'IDATx'#218#132#146'oHSQ'#24#198#159#187#221'm'#162#166'NG'#132#17#142#20'CL' + +'#'#150#132#203#176#8#194'$'#130'B'#130'rP3PP'#168'P"'#144#164#200#213'>'#244 + +'!A'#194#180#130'Z*'#154'K,cdjh'#174'2'#218#164'?8'#21#251#224#152'1'#5'm' + +#163#253#235#238#238#222#219#217#194#156'8'#235#129#195'9'#156#243#254#222 + +#247''#133#164'M'#171'w'#143'_'#149'E' + +#246#219'Fcn'#8#168#253#9#24#230#129'Q'#17'b('#127#231'Z8J'#25#211#10'Em'#134 + +'^_'#225#1#234'y'#224#208#186#4#133'j 99&'#156#197#178'l'#169#218'n'#175'`' + +#230#230#144'W^~'#216'+'#8#231#169#21#11'i'#10' ;'#27'HM'#139#129#10'8'#224 + +'XT'#156#211#214#217'56'#155#13'r'#185#28#157'99'#166'm'#193'`'#3#29'~Wn'#1 + +'r'#11#16'['#4'fY\'#174#174#169'+'#25'z'#177#31#219'UO'#160'V'#171'u'#233'bq' + +'g'#150'D2Ew\'#1'(J '#145#212#134#240#137'S'#250#18#142'c'#145#153#153#137 + +#222#7#185#207'|>'#218'8CQS3'#18#9'h'#224#223#149#195'0'#195#248#177#176#240 + +#13#19#227'OG'#179#148'h'#230'y'#209#231#149'0'#250#127#176#207#231#134#203 + +#245#29#230#215']c'#164#160#206')'#217'7'#188#181#180#8'!6'#4'6'#200#196'H' + +#16#5#187#221#139#240#249'\x'#217#223'a'#150'J'#208#184'(-'#28'z.'#238'A'#250 + +#17#128#9#4#224#247'x '#218#8'^Z'#178'G'#224#222'n'#195';'#142#195'u'#135'P0' + +#216#23#215#3'A'#16'Z'#201#210#172#183#16#5';'#157#179#224#249#16':'#30#26 + +#198#127#196#23'\'#251'*'#169#25'tR{ &'#21'i'#169'TE'#162'U$I'#152'j'#143#252 + +#128#156'w'#248'='#168#12#195#14#199'$X'#246#23#238#223'5| '#149#175#154#226 + +#218#202#230#177#219#194'q'#156'%'#200'0'#150#240#183#207#28'W'#170#2'^'#239 + +'E'#129#231'5'#212#189'K'#144#134'8T'#158#174#29'i'#156#157#210#165#164#145 + +#137'j'#187#211#253#145#150#160#193#150#160#29#248'$'#213'Z.T'#23#169#166#201 + +#240'{B'#171'n7'#203#128#190'Gf+'#237#241'S'#170'<'#181#182#140#18#137'R'#228 + +'i'#26#127#211'-'#237#132'L&'#232#196'45'#240'>x'#18#2#227#181#222#212#155 + +#214#180'JY^'#170#26'l5Y'#9#211'D/{pt'#239#193#179#197#253'='#205'_'#222#12 + +#27#223#146#247'N'#169#12#230#191#173#225#249'*.'#244#167'4O<'#133'mL'#182't' + +'E'#224#248#196#196'v'#250#134'A'#168'_v'#23#183#144#150#244#147#152#17#178#2 + +#27#205#150#199#229#10'7'#204'J'#142'c'#178#132#132#246#240#221'o'#1#6#0#177 + +#145';1'#128#133#216'I'#0#0#0#0'IEND'#174'B`'#130 +]); LazarusResources.Add('arrow_redo','PNG',[ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' +#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#2'7IDATx'#218#140 From 87d588d475f24c66d8e6657157eb312d81296fe7 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 1 Feb 2015 01:48:27 +0100 Subject: [PATCH 4/5] nothing --- src/ce_editor.pas | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 67c41667..09e12ef1 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -52,9 +52,9 @@ type procedure memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure memoCtrlClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure memoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); - function getEditor(index: NativeInt): TCESynMemo; - function getEditorCount: NativeInt; - function getEditorIndex: NativeInt; + function getEditor(index: Integer): TCESynMemo; + function getEditorCount: Integer; + function getEditorIndex: Integer; procedure getCompletionList; procedure getSymbolLoc; procedure focusedEditorChanged; @@ -67,9 +67,9 @@ type constructor create(aOwner: TComponent); override; destructor destroy; override; // - property editor[index: NativeInt]: TCESynMemo read getEditor; - property editorCount: NativeInt read getEditorCount; - property editorIndex: NativeInt read getEditorIndex; + property editor[index: Integer]: TCESynMemo read getEditor; + property editorCount: Integer read getEditorCount; + property editorIndex: Integer read getEditorIndex; end; implementation @@ -210,12 +210,12 @@ begin end; {$ENDIF} -function TCEEditorWidget.getEditorCount: NativeInt; +function TCEEditorWidget.getEditorCount: Integer; begin result := pageControl.PageCount; end; -function TCEEditorWidget.getEditorIndex: NativeInt; +function TCEEditorWidget.getEditorIndex: Integer; begin if pageControl.PageCount > 0 then result := pageControl.PageIndex From a8430f74f9a26037f241e42483d134bebc9db33e Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 1 Feb 2015 01:48:55 +0100 Subject: [PATCH 5/5] added persistent option auto-refresh --- src/ce_todolist.lfm | 22 +++++++++++++++-- src/ce_todolist.pas | 57 +++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 72 insertions(+), 7 deletions(-) diff --git a/src/ce_todolist.lfm b/src/ce_todolist.lfm index b90cc8f3..b3e6f5f8 100644 --- a/src/ce_todolist.lfm +++ b/src/ce_todolist.lfm @@ -41,10 +41,10 @@ inherited CETodoListWidget: TCETodoListWidget TabOrder = 0 end object lstfilter: TListFilterEdit - Left = 38 + Left = 68 Height = 23 Top = 2 - Width = 513 + Width = 483 ButtonWidth = 28 NumGlyphs = 1 Align = alCustom @@ -52,6 +52,19 @@ inherited CETodoListWidget: TCETodoListWidget MaxLength = 0 TabOrder = 1 end + object btnGo: TBitBtn + Left = 32 + Height = 22 + Hint = 'refresh the list' + Top = 2 + Width = 28 + Align = alLeft + BorderSpacing.Around = 2 + Layout = blGlyphBottom + OnClick = btnGoClick + Spacing = 0 + TabOrder = 2 + end end object lstItems: TListView[1] Left = 4 @@ -90,5 +103,10 @@ inherited CETodoListWidget: TCETodoListWidget inherited contextMenu: TPopupMenu left = 40 top = 72 + object mnuAutoRefresh: TMenuItem[0] + AutoCheck = True + Caption = 'Auto resfresh' + OnClick = mnuAutoRefreshClick + end end end diff --git a/src/ce_todolist.pas b/src/ce_todolist.pas index c57390a7..a5cb088a 100644 --- a/src/ce_todolist.pas +++ b/src/ce_todolist.pas @@ -56,12 +56,17 @@ type { TCETodoListWidget } - TCETodoListWidget = class(TCEWidget, ICEMultiDocObserver, ICEProjectObserver) + TCETodoListWidget = class(TCEWidget, ICEMultiDocObserver, ICEProjectObserver, ICESessionOptionsObserver) btnRefresh: TBitBtn; + btnGo: TBitBtn; lstItems: TListView; lstfilter: TListFilterEdit; + mnuAutoRefresh: TMenuItem; Panel1: TPanel; + procedure btnGoClick(Sender: TObject); + procedure mnuAutoRefreshClick(Sender: TObject); private + fAutoRefresh: Boolean; fProj: TCEProject; fDoc: TCESynMemo; fToolProcess: TCheckedAsyncProcess; @@ -91,6 +96,11 @@ type procedure filterItems(sender: TObject); protected procedure SetVisible(Value: boolean); override; + // ICESessionOptionsObserver + procedure optset_AutoReafresh(aReader: TReader); + procedure optget_AutoReafresh(aWriter: TWriter); + procedure sesoptDeclareProperties(aFiler: TFiler); override; + procedure sesoptAfterLoad; override; public constructor create(aOwner: TComponent); override; destructor destroy; override; @@ -166,7 +176,8 @@ begin fLogMessager := TCELogMessageSubject.create; lstItems.OnDblClick := @lstItemsDoubleClick; btnRefresh.OnClick := @btnRefreshClick; - + fAutoRefresh := true; + mnuAutoRefresh.Checked := true; // http://bugs.freepascal.org/view.php?id=27137 // TODO-cCleanup: remove comment after next Laz release // TODO-cfeature, try the new TListViewFilterEdit here. @@ -176,6 +187,8 @@ begin try png.LoadFromLazarusResource('arrow_update'); btnRefresh.Glyph.Assign(png); + png.LoadFromLazarusResource('arrow_pen'); + btnGo.Glyph.Assign(png); finally png.Free; end; @@ -197,6 +210,30 @@ end; {$ENDREGION} +{$REGION ICESessionOptionsObserver --------------------------------------------} +procedure TCETodoListWidget.optset_AutoReafresh(aReader: TReader); +begin + fAutoRefresh := aReader.ReadBoolean; +end; + +procedure TCETodoListWidget.optget_AutoReafresh(aWriter: TWriter); +begin + aWriter.WriteBoolean(fAutoRefresh); +end; + +procedure TCETodoListWidget.sesoptDeclareProperties(aFiler: TFiler); +begin + inherited; + aFiler.DefineProperty(Name + '_AutoRefresh', @optset_AutoReafresh, @optget_AutoReafresh, true); +end; + +procedure TCETodoListWidget.sesoptAfterLoad; +begin + inherited; + mnuAutoRefresh.Checked := fAutoRefresh; +end; +{$ENDREGIOn} + {$REGION ICEMultiDocObserver ---------------------------------------------------} procedure TCETodoListWidget.docNew(aDoc: TCESynMemo); begin @@ -206,7 +243,7 @@ procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo); begin if aDoc = fDoc then exit; fDoc := aDoc; - if Visible then + if Visible and fAutoRefresh then callToolProcess; end; @@ -232,7 +269,7 @@ end; procedure TCETodoListWidget.projChanged(aProject: TCEProject); begin if fProj <> aProject then exit; - if Visible then + if Visible and fAutoRefresh then callToolProcess; end; @@ -247,7 +284,7 @@ procedure TCETodoListWidget.projFocused(aProject: TCEProject); begin if aProject = fProj then exit; fProj := aProject; - if Visible then + if Visible and fAutoRefresh then callToolProcess; end; @@ -404,6 +441,16 @@ begin end; end; +procedure TCETodoListWidget.btnGoClick(Sender: TObject); +begin + lstItemsDoubleClick(nil); +end; + +procedure TCETodoListWidget.mnuAutoRefreshClick(Sender: TObject); +begin + fAutoRefresh := mnuAutoRefresh.Checked; +end; + procedure TCETodoListWidget.lstItemsDoubleClick(sender: TObject); var itm: TTodoItem;