IDE, SourceEditor: clean-up the new "lock-honouring" code, put UpdateProjectFiles back into CloseFile (it' honours the lock, while project closing)

git-svn-id: trunk@29581 -
This commit is contained in:
martin 2011-02-16 22:49:50 +00:00
parent 93873ae295
commit 959a53f86e

View File

@ -579,6 +579,7 @@ type
private private
FManager: TSourceEditorManager; FManager: TSourceEditorManager;
FUpdateLock, FFocusLock: Integer; FUpdateLock, FFocusLock: Integer;
FUpdateFlags: set of (ufPageNames, ufTabsAndPage, ufStatusBar, ufProjectFiles);
FPageIndex: Integer; FPageIndex: Integer;
fAutoFocusLock: integer; fAutoFocusLock: integer;
FIncrementalSearchPos: TPoint; // last set position FIncrementalSearchPos: TPoint; // last set position
@ -619,7 +620,7 @@ type
procedure SetIncrementalSearchStr(const AValue: string); procedure SetIncrementalSearchStr(const AValue: string);
procedure IncrementalSearch(ANext, ABackward: Boolean); procedure IncrementalSearch(ANext, ABackward: Boolean);
procedure UpdatePageNames; procedure UpdatePageNames;
procedure UpdateProjectFiles; procedure UpdateProjectFiles(ACurrentEditor: TSourceEditor = nil);
property NoteBookPage[Index: Integer]: TTabSheet read GetNoteBookPage; property NoteBookPage[Index: Integer]: TTabSheet read GetNoteBookPage;
procedure NoteBookInsertPage(Index: Integer; const S: string); procedure NoteBookInsertPage(Index: Integer; const S: string);
@ -4139,7 +4140,10 @@ var
p: Integer; p: Integer;
NewPageName: String; NewPageName: String;
begin begin
if SourceNotebook.FUpdateLock > 0 then exit; if SourceNotebook.FUpdateLock > 0 then begin
include(SourceNotebook.FUpdateFlags, ufPageNames);
exit;
end;
p:=SourceNotebook.FindPageWithEditor(Self); p:=SourceNotebook.FindPageWithEditor(Self);
if EditorOpts.ShowTabNumbers and (p < 10) then if EditorOpts.ShowTabNumbers and (p < 10) then
// Number pages 1, ..., 9, 0 -- according to Alt+N hotkeys. // Number pages 1, ..., 9, 0 -- according to Alt+N hotkeys.
@ -5526,16 +5530,25 @@ procedure TSourceNotebook.UpdatePageNames;
var var
i: Integer; i: Integer;
begin begin
if FUpdateLock > 0 then exit; if FUpdateLock > 0 then begin
include(FUpdateFlags, ufPageNames);
exit;
end;
for i:=0 to PageCount-1 do for i:=0 to PageCount-1 do
FindSourceEditorWithPageIndex(i).UpdatePageName; FindSourceEditorWithPageIndex(i).UpdatePageName;
UpdateTabsAndPageTitle; UpdateTabsAndPageTitle;
end; end;
procedure TSourceNotebook.UpdateProjectFiles; procedure TSourceNotebook.UpdateProjectFiles(ACurrentEditor: TSourceEditor = nil);
var var
i: Integer; i: Integer;
begin begin
if FUpdateLock > 0 then begin
if ACurrentEditor <> nil then
ACurrentEditor.UpdateProjectFile;
include(FUpdateFlags, ufProjectFiles);
exit;
end;
for i := 0 to EditorCount - 1 do for i := 0 to EditorCount - 1 do
Editors[i].UpdateProjectFile; Editors[i].UpdateProjectFile;
end; end;
@ -5838,6 +5851,8 @@ end;
procedure TSourceNotebook.IncUpdateLock; procedure TSourceNotebook.IncUpdateLock;
begin begin
if FUpdateLock = 0 then
FUpdateFlags := [];
inc(FUpdateLock); inc(FUpdateLock);
end; end;
@ -5846,8 +5861,11 @@ begin
dec(FUpdateLock); dec(FUpdateLock);
if FUpdateLock = 0 then begin if FUpdateLock = 0 then begin
PageIndex := FPageIndex; PageIndex := FPageIndex;
UpdatePageNames; if (ufPageNames in FUpdateFlags) then UpdatePageNames;
UpdateStatusBar; if (ufTabsAndPage in FUpdateFlags) then UpdateTabsAndPageTitle;
if (ufStatusBar in FUpdateFlags) then UpdateStatusBar;
if (ufProjectFiles in FUpdateFlags) then UpdateProjectFiles;
FUpdateFlags := [];
end; end;
end; end;
@ -5893,7 +5911,10 @@ end;
procedure TSourceNotebook.UpdateTabsAndPageTitle; procedure TSourceNotebook.UpdateTabsAndPageTitle;
begin begin
if FUpdateLock > 0 then exit; if FUpdateLock > 0 then begin
include(FUpdateFlags, ufTabsAndPage);
exit;
end;
if (PageCount = 1) and (EditorOpts.HideSingleTabInWindow) then begin if (PageCount = 1) and (EditorOpts.HideSingleTabInWindow) then begin
Caption := FBaseCaption + ': ' + NotebookPages[0]; Caption := FBaseCaption + ': ' + NotebookPages[0];
FNotebook.ShowTabs := False; FNotebook.ShowTabs := False;
@ -6166,7 +6187,7 @@ begin
UpdatePageNames; UpdatePageNames;
UpdateProjectFiles; UpdateProjectFiles;
DestWin.UpdatePageNames; DestWin.UpdatePageNames;
DestWin.UpdateProjectFiles; DestWin.UpdateProjectFiles(Edit);
DestWin.UpdateActiveEditColors(Edit.EditorComponent); DestWin.UpdateActiveEditColors(Edit.EditorComponent);
DestWin.UpdateStatusBar; DestWin.UpdateStatusBar;
@ -6201,7 +6222,7 @@ begin
UpdatePageNames; UpdatePageNames;
UpdateProjectFiles; UpdateProjectFiles;
DestWin.UpdateProjectFiles; DestWin.UpdateProjectFiles(NewEdit);
// Update IsVisibleTab; needs UnitEditorInfo created in DestWin.UpdateProjectFiles // Update IsVisibleTab; needs UnitEditorInfo created in DestWin.UpdateProjectFiles
if Focus then begin if Focus then begin
Manager.ActiveEditor := NewEdit; Manager.ActiveEditor := NewEdit;
@ -6458,7 +6479,7 @@ Begin
//debugln(['TSourceNotebook.NewFile ',NewShortName,' ',ASource.Filename]); //debugln(['TSourceNotebook.NewFile ',NewShortName,' ',ASource.Filename]);
Result.PageName:= s; Result.PageName:= s;
UpdatePageNames; UpdatePageNames;
Editors[EditorCount-1].UpdateProjectFile; UpdateProjectFiles(Result);
UpdateStatusBar; UpdateStatusBar;
finally finally
EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TSourceNotebook.NewFile'){$ENDIF}; EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TSourceNotebook.NewFile'){$ENDIF};
@ -6494,6 +6515,7 @@ begin
//writeln('TSourceNotebook.CloseFile B APageIndex=',APageIndex,' PageCount=',PageCount,' NoteBook.APageIndex=',Notebook.APageIndex); //writeln('TSourceNotebook.CloseFile B APageIndex=',APageIndex,' PageCount=',PageCount,' NoteBook.APageIndex=',Notebook.APageIndex);
NoteBookDeletePage(APageIndex); NoteBookDeletePage(APageIndex);
//writeln('TSourceNotebook.CloseFile C APageIndex=',APageIndex,' PageCount=',PageCount,' NoteBook.APageIndex=',Notebook.APageIndex); //writeln('TSourceNotebook.CloseFile C APageIndex=',APageIndex,' PageCount=',PageCount,' NoteBook.APageIndex=',Notebook.APageIndex);
UpdateProjectFiles;
UpdatePageNames; UpdatePageNames;
if WasSelected then if WasSelected then
UpdateStatusBar; UpdateStatusBar;
@ -6651,7 +6673,10 @@ var
PanelFileMode: string; PanelFileMode: string;
CurEditor: TSynEdit; CurEditor: TSynEdit;
begin begin
if FUpdateLock > 0 then exit; if FUpdateLock > 0 then begin
include(FUpdateFlags, ufStatusBar);
exit;
end;
if (not IsVisible) or (FUpdateLock > 0) then if (not IsVisible) or (FUpdateLock > 0) then
begin begin
Include(States,snUpdateStatusBarNeeded); Include(States,snUpdateStatusBarNeeded);