mirror of https://gitlab.com/basile.b/dexed.git
fix, bug described in bdc7626b26
, focus event, too much updates.
the docFocused event is still called but the observers does not always perform their updates
This commit is contained in:
parent
e9c6de2700
commit
f211d3533f
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -286,6 +286,7 @@ end;
|
|||
|
||||
procedure TCEStaticExplorerWidget.docFocused(aDoc: TCESynMemo);
|
||||
begin
|
||||
if fDoc = aDoc then exit;
|
||||
fDoc := aDoc;
|
||||
if not Visible then exit;
|
||||
//
|
||||
|
|
|
@ -128,6 +128,7 @@ end;
|
|||
|
||||
procedure TCEStaticEditorMacro.docFocused(aDoc: TCESynMemo);
|
||||
begin
|
||||
if fDoc = aDoc then exit;
|
||||
fDoc := aDoc;
|
||||
fCompletor.Editor := fDoc;
|
||||
end;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue