Ensure bookmark menu is updated if files are opened/closed. Those files may have bookmarks in the session, that will be set for the editor. Part of Issue #0034194

git-svn-id: trunk@59402 -
This commit is contained in:
martin 2018-10-31 17:24:50 +00:00
parent ae95c9b326
commit 8c8f4b60c2

View File

@ -467,6 +467,7 @@ type
procedure SrcNotebookEditorDoGotoBookmark(Sender: TObject; ID: Integer; Backward: Boolean); procedure SrcNotebookEditorDoGotoBookmark(Sender: TObject; ID: Integer; Backward: Boolean);
procedure SrcNotebookEditorChanged(Sender: TObject); procedure SrcNotebookEditorChanged(Sender: TObject);
procedure SrcNotebookEditorMoved(Sender: TObject); procedure SrcNotebookEditorMoved(Sender: TObject);
procedure SrcNotebookEditorCreated(Sender: TObject);
procedure SrcNotebookEditorClosed(Sender: TObject); procedure SrcNotebookEditorClosed(Sender: TObject);
procedure SrcNotebookCurCodeBufferChanged(Sender: TObject); procedure SrcNotebookCurCodeBufferChanged(Sender: TObject);
procedure SrcNotebookFileNew(Sender: TObject); procedure SrcNotebookFileNew(Sender: TObject);
@ -2157,6 +2158,7 @@ begin
SourceEditorManager.RegisterChangeEvent(semEditorActivate, @SrcNotebookEditorActived); SourceEditorManager.RegisterChangeEvent(semEditorActivate, @SrcNotebookEditorActived);
SourceEditorManager.RegisterChangeEvent(semEditorStatus, @SrcNotebookEditorChanged); SourceEditorManager.RegisterChangeEvent(semEditorStatus, @SrcNotebookEditorChanged);
SourceEditorManager.OnEditorMoved := @SrcNotebookEditorMoved; SourceEditorManager.OnEditorMoved := @SrcNotebookEditorMoved;
SourceEditorManager.RegisterChangeEvent(semEditorCreate, @SrcNotebookEditorCreated);
SourceEditorManager.RegisterChangeEvent(semEditorDestroy, @SrcNotebookEditorClosed); SourceEditorManager.RegisterChangeEvent(semEditorDestroy, @SrcNotebookEditorClosed);
SourceEditorManager.OnPlaceBookmark := @SrcNotebookEditorPlaceBookmark; SourceEditorManager.OnPlaceBookmark := @SrcNotebookEditorPlaceBookmark;
SourceEditorManager.OnClearBookmark := @SrcNotebookEditorClearBookmark; SourceEditorManager.OnClearBookmark := @SrcNotebookEditorClearBookmark;
@ -11042,6 +11044,12 @@ begin
end; end;
end; end;
procedure TMainIDE.SrcNotebookEditorCreated(Sender: TObject);
begin
inc(BookmarksStamp); // updates are OnIdle. So any bookmarks changed before next idle will be updated
// TODO: maybe an event semBookmarkSet/Changed should be implemented?
end;
procedure TMainIDE.SrcNotebookEditorClosed(Sender: TObject); procedure TMainIDE.SrcNotebookEditorClosed(Sender: TObject);
var var
SrcEditor: TSourceEditor; SrcEditor: TSourceEditor;
@ -11051,6 +11059,7 @@ begin
p :=Project1.EditorInfoWithEditorComponent(SrcEditor); p :=Project1.EditorInfoWithEditorComponent(SrcEditor);
if (p <> nil) then if (p <> nil) then
p.EditorComponent := nil; // Set EditorIndex := -1 p.EditorComponent := nil; // Set EditorIndex := -1
inc(BookmarksStamp); // Editor may have had bookmarks
end; end;
procedure TMainIDE.SrcNotebookCurCodeBufferChanged(Sender: TObject); procedure TMainIDE.SrcNotebookCurCodeBufferChanged(Sender: TObject);