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);
|
procedure TCEEditorWidget.docFocused(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
|
if aDoc = fDoc then exit;
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
focusedEditorChanged;
|
focusedEditorChanged;
|
||||||
beginUpdateByDelay;
|
beginUpdateByDelay;
|
||||||
|
@ -234,7 +235,6 @@ begin
|
||||||
macRecorder.Editor := fDoc;
|
macRecorder.Editor := fDoc;
|
||||||
fSyncEdit.Editor := fDoc;
|
fSyncEdit.Editor := fDoc;
|
||||||
completion.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
|
if (pageControl.ActivePage.Caption = '') then
|
||||||
begin
|
begin
|
||||||
fKeyChanged := true;
|
fKeyChanged := true;
|
||||||
|
|
|
@ -364,6 +364,7 @@ end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.projFocused(aProject: TCEProject);
|
procedure TCEMessagesWidget.projFocused(aProject: TCEProject);
|
||||||
begin
|
begin
|
||||||
|
if fProj = aProject then exit;
|
||||||
fProj := aProject;
|
fProj := aProject;
|
||||||
filterMessages(fCtxt);
|
filterMessages(fCtxt);
|
||||||
end;
|
end;
|
||||||
|
@ -394,6 +395,7 @@ end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.docFocused(aDoc: TCESynMemo);
|
procedure TCEMessagesWidget.docFocused(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
|
if fDoc = aDoc then exit;
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
filterMessages(fCtxt);
|
filterMessages(fCtxt);
|
||||||
end;
|
end;
|
||||||
|
|
|
@ -29,7 +29,7 @@ type
|
||||||
procedure cbToFindChange(Sender: TObject);
|
procedure cbToFindChange(Sender: TObject);
|
||||||
procedure chkEnableRepChange(Sender: TObject);
|
procedure chkEnableRepChange(Sender: TObject);
|
||||||
private
|
private
|
||||||
fEditor: TCESynMemo;
|
fDoc: TCESynMemo;
|
||||||
fToFind: string;
|
fToFind: string;
|
||||||
fReplaceWth: string;
|
fReplaceWth: string;
|
||||||
fActFindNext, fActReplaceNext: TAction;
|
fActFindNext, fActReplaceNext: TAction;
|
||||||
|
@ -187,28 +187,28 @@ end;
|
||||||
|
|
||||||
procedure TCESearchWidget.actFindNextExecute(sender: TObject);
|
procedure TCESearchWidget.actFindNextExecute(sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fEditor = nil then exit;
|
if fDoc = nil then exit;
|
||||||
//
|
//
|
||||||
fSearchMru.Insert(0,fToFind);
|
fSearchMru.Insert(0,fToFind);
|
||||||
if not chkFromCur.Checked then
|
if not chkFromCur.Checked then
|
||||||
begin
|
begin
|
||||||
if chkBack.Checked then
|
if chkBack.Checked then
|
||||||
fEditor.CaretXY := Point(high(Integer), high(Integer))
|
fDoc.CaretXY := Point(high(Integer), high(Integer))
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
if not fHasRestarted then
|
if not fHasRestarted then
|
||||||
fEditor.CaretXY := Point(0,0);
|
fDoc.CaretXY := Point(0,0);
|
||||||
fHasRestarted := true;
|
fHasRestarted := true;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
else if fHasSearched then
|
else if fHasSearched then
|
||||||
begin
|
begin
|
||||||
if chkBack.Checked then
|
if chkBack.Checked then
|
||||||
fEditor.CaretX := fEditor.CaretX - 1
|
fDoc.CaretX := fDoc.CaretX - 1
|
||||||
else
|
else
|
||||||
fEditor.CaretX := fEditor.CaretX + length(fToFind);
|
fDoc.CaretX := fDoc.CaretX + length(fToFind);
|
||||||
end;
|
end;
|
||||||
if fEditor.SearchReplace(fToFind, '', getOptions) = 0 then
|
if fDoc.SearchReplace(fToFind, '', getOptions) = 0 then
|
||||||
dlgOkInfo('the expression cannot be found')
|
dlgOkInfo('the expression cannot be found')
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
|
@ -221,29 +221,29 @@ end;
|
||||||
|
|
||||||
procedure TCESearchWidget.actReplaceNextExecute(sender: TObject);
|
procedure TCESearchWidget.actReplaceNextExecute(sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fEditor = nil then exit;
|
if fDoc = nil then exit;
|
||||||
//
|
//
|
||||||
fSearchMru.Insert(0, fToFind);
|
fSearchMru.Insert(0, fToFind);
|
||||||
fReplaceMru.Insert(0, fReplaceWth);
|
fReplaceMru.Insert(0, fReplaceWth);
|
||||||
if chkPrompt.Checked then
|
if chkPrompt.Checked then
|
||||||
fEditor.OnReplaceText := @replaceEvent;
|
fDoc.OnReplaceText := @replaceEvent;
|
||||||
if not chkFromCur.Checked then
|
if not chkFromCur.Checked then
|
||||||
begin
|
begin
|
||||||
if chkBack.Checked then
|
if chkBack.Checked then
|
||||||
fEditor.CaretXY := Point(high(Integer), high(Integer))
|
fDoc.CaretXY := Point(high(Integer), high(Integer))
|
||||||
else
|
else
|
||||||
fEditor.CaretXY := Point(0,0);
|
fDoc.CaretXY := Point(0,0);
|
||||||
end
|
end
|
||||||
else if fHasSearched then
|
else if fHasSearched then
|
||||||
begin
|
begin
|
||||||
if chkBack.Checked then
|
if chkBack.Checked then
|
||||||
fEditor.CaretX := fEditor.CaretX - 1
|
fDoc.CaretX := fDoc.CaretX - 1
|
||||||
else
|
else
|
||||||
fEditor.CaretX := fEditor.CaretX + length(fToFind);
|
fDoc.CaretX := fDoc.CaretX + length(fToFind);
|
||||||
end;
|
end;
|
||||||
if fEditor.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then
|
if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then
|
||||||
fHasSearched := true;
|
fHasSearched := true;
|
||||||
fEditor.OnReplaceText := nil;
|
fDoc.OnReplaceText := nil;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -251,17 +251,17 @@ procedure TCESearchWidget.actReplaceAllExecute(sender: TObject);
|
||||||
var
|
var
|
||||||
opts: TSynSearchOptions;
|
opts: TSynSearchOptions;
|
||||||
begin
|
begin
|
||||||
if fEditor = nil then exit;
|
if fDoc = nil then exit;
|
||||||
opts := getOptions + [ssoReplace];
|
opts := getOptions + [ssoReplace];
|
||||||
opts -= [ssoBackwards];
|
opts -= [ssoBackwards];
|
||||||
//
|
//
|
||||||
fSearchMru.Insert(0, fToFind);
|
fSearchMru.Insert(0, fToFind);
|
||||||
fReplaceMru.Insert(0, fReplaceWth);
|
fReplaceMru.Insert(0, fReplaceWth);
|
||||||
if chkPrompt.Checked then fEditor.OnReplaceText := @replaceEvent;
|
if chkPrompt.Checked then fDoc.OnReplaceText := @replaceEvent;
|
||||||
fEditor.CaretXY := Point(0,0);
|
fDoc.CaretXY := Point(0,0);
|
||||||
while(true) do
|
while(true) do
|
||||||
begin
|
begin
|
||||||
if fEditor.SearchReplace(fToFind, fReplaceWth, opts) = 0
|
if fDoc.SearchReplace(fToFind, fReplaceWth, opts) = 0
|
||||||
then break;
|
then break;
|
||||||
if fCancelAll then
|
if fCancelAll then
|
||||||
begin
|
begin
|
||||||
|
@ -269,7 +269,7 @@ begin
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
fEditor.OnReplaceText := nil;
|
fDoc.OnReplaceText := nil;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
@ -277,19 +277,20 @@ end;
|
||||||
{$REGION ICEMultiDocObserver ---------------------------------------------------}
|
{$REGION ICEMultiDocObserver ---------------------------------------------------}
|
||||||
procedure TCESearchWidget.docNew(aDoc: TCESynMemo);
|
procedure TCESearchWidget.docNew(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
fEditor := aDoc;
|
fDoc := aDoc;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.docClosing(aDoc: TCESynMemo);
|
procedure TCESearchWidget.docClosing(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
if fEditor = aDoc then fEditor := nil;
|
if fDoc = aDoc then fDoc := nil;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.docFocused(aDoc: TCESynMemo);
|
procedure TCESearchWidget.docFocused(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
fEditor := aDoc;
|
if fDoc = aDoc then exit;
|
||||||
|
fDoc := aDoc;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -321,11 +322,11 @@ end;
|
||||||
|
|
||||||
procedure TCESearchWidget.UpdateByEvent;
|
procedure TCESearchWidget.UpdateByEvent;
|
||||||
begin
|
begin
|
||||||
fActFindNext.Enabled := fEditor <> nil;
|
fActFindNext.Enabled := fDoc <> nil;
|
||||||
fActReplaceNext.Enabled := (fEditor <> nil) and (chkEnableRep.Checked);
|
fActReplaceNext.Enabled := (fDoc <> nil) and (chkEnableRep.Checked);
|
||||||
fActReplaceAll.Enabled := (fEditor <> nil) and (chkEnableRep.Checked);
|
fActReplaceAll.Enabled := (fDoc <> nil) and (chkEnableRep.Checked);
|
||||||
cbReplaceWth.Enabled := (fEditor <> nil) and (chkEnableRep.Checked);
|
cbReplaceWth.Enabled := (fDoc <> nil) and (chkEnableRep.Checked);
|
||||||
cbToFind.Enabled := fEditor <> nil;
|
cbToFind.Enabled := fDoc <> nil;
|
||||||
//
|
//
|
||||||
cbToFind.Items.Assign(fSearchMru);
|
cbToFind.Items.Assign(fSearchMru);
|
||||||
cbReplaceWth.Items.Assign(fReplaceMru);
|
cbReplaceWth.Items.Assign(fReplaceMru);
|
||||||
|
|
|
@ -286,6 +286,7 @@ end;
|
||||||
|
|
||||||
procedure TCEStaticExplorerWidget.docFocused(aDoc: TCESynMemo);
|
procedure TCEStaticExplorerWidget.docFocused(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
|
if fDoc = aDoc then exit;
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
if not Visible then exit;
|
if not Visible then exit;
|
||||||
//
|
//
|
||||||
|
|
|
@ -128,6 +128,7 @@ end;
|
||||||
|
|
||||||
procedure TCEStaticEditorMacro.docFocused(aDoc: TCESynMemo);
|
procedure TCEStaticEditorMacro.docFocused(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
|
if fDoc = aDoc then exit;
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
fCompletor.Editor := fDoc;
|
fCompletor.Editor := fDoc;
|
||||||
end;
|
end;
|
||||||
|
|
|
@ -204,6 +204,7 @@ end;
|
||||||
|
|
||||||
procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo);
|
procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
|
if aDoc = fDoc then exit;
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
if Visible then
|
if Visible then
|
||||||
callToolProcess;
|
callToolProcess;
|
||||||
|
@ -244,6 +245,7 @@ end;
|
||||||
|
|
||||||
procedure TCETodoListWidget.projFocused(aProject: TCEProject);
|
procedure TCETodoListWidget.projFocused(aProject: TCEProject);
|
||||||
begin
|
begin
|
||||||
|
if aProject = fProj then exit;
|
||||||
fProj := aProject;
|
fProj := aProject;
|
||||||
if Visible then
|
if Visible then
|
||||||
callToolProcess;
|
callToolProcess;
|
||||||
|
|
Loading…
Reference in New Issue