From 4ac1f026c2391f0140fb6253370d8f42782ef521 Mon Sep 17 00:00:00 2001 From: Juha Date: Wed, 19 Jan 2022 07:57:07 +0200 Subject: [PATCH] IDE: Create new MenuItems for bookmarks. A MenuItem cannot be used for many parent menus. Issue #39540. --- components/ideintf/menuintf.pas | 7 +++++++ components/ideintf/toolbarintf.pas | 1 - ide/sourceeditor.pp | 30 +++++++++++++++--------------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/components/ideintf/menuintf.pas b/components/ideintf/menuintf.pas index 0c31ec31e7..f4f172e8f0 100644 --- a/components/ideintf/menuintf.pas +++ b/components/ideintf/menuintf.pas @@ -74,6 +74,7 @@ type function GetImageList: TCustomImageList; virtual; function HasBitmap: Boolean; procedure CreateMenuItem; virtual; // only create and set properties, does not add to Section.MenuItem + procedure CreateNewMenuItem; function GetPath: string; function GetRoot: TIDEMenuItem; function VisibleActive: boolean; virtual; @@ -791,6 +792,12 @@ begin MenuItem:=MenuItemClass.Create(nil); end; +procedure TIDEMenuItem.CreateNewMenuItem; +begin + FMenuItem.Free; + MenuItem:=MenuItemClass.Create(nil); +end; + function TIDEMenuItem.GetPath: string; var Item: TIDEMenuItem; diff --git a/components/ideintf/toolbarintf.pas b/components/ideintf/toolbarintf.pas index 266a82d54b..088033d68c 100644 --- a/components/ideintf/toolbarintf.pas +++ b/components/ideintf/toolbarintf.pas @@ -311,7 +311,6 @@ begin FPosition := -1; end; - function TIDEToolButtonsEnumerator.GetCurrent: TIDEToolButton; begin Result := FList[FPosition]; diff --git a/ide/sourceeditor.pp b/ide/sourceeditor.pp index 2c6e23e0e6..15f18ef8e8 100644 --- a/ide/sourceeditor.pp +++ b/ide/sourceeditor.pp @@ -1877,16 +1877,16 @@ end; procedure TToolButton_GotoBookmarks.RefreshMenu; var - i: TIDEMenuCommand; + cmd: TIDEMenuCommand; begin - for i in SrcEditMenuGotoBookmark do - if i <> nil then begin - i.CreateMenuItem; - DropdownMenu.Items.Add(i.MenuItem); + for cmd in SrcEditMenuGotoBookmark do + if cmd <> nil then begin + cmd.CreateNewMenuItem; + DropdownMenu.Items.Add(cmd.MenuItem); end; DropdownMenu.Items.AddSeparator; - SrcEditMenuPrevBookmark.CreateMenuItem; - SrcEditMenuNextBookmark.CreateMenuItem; + SrcEditMenuPrevBookmark.CreateNewMenuItem; + SrcEditMenuNextBookmark.CreateNewMenuItem; DropdownMenu.Items.Add([ SrcEditMenuPrevBookmark.MenuItem, SrcEditMenuNextBookmark.MenuItem]); @@ -1907,19 +1907,19 @@ end; procedure TToolButton_ToggleBookmarks.RefreshMenu; var - i: TIDEMenuCommand; + cmd: TIDEMenuCommand; begin - for i in SrcEditMenuToggleBookmark do - if i <> nil then begin - i.CreateMenuItem; - DropdownMenu.Items.Add(i.MenuItem); + for cmd in SrcEditMenuToggleBookmark do + if cmd <> nil then begin + cmd.CreateNewMenuItem; + DropdownMenu.Items.Add(cmd.MenuItem); end; DropdownMenu.Items.AddSeparator; - SrcEditMenuSetFreeBookmark.CreateMenuItem; + SrcEditMenuSetFreeBookmark.CreateNewMenuItem; DropdownMenu.Items.Add(SrcEditMenuSetFreeBookmark.MenuItem); DropdownMenu.Items.AddSeparator; - SrcEditMenuClearFileBookmark.CreateMenuItem; - SrcEditMenuClearAllBookmark.CreateMenuItem; + SrcEditMenuClearFileBookmark.CreateNewMenuItem; + SrcEditMenuClearAllBookmark.CreateNewMenuItem; DropdownMenu.Items.Add([ SrcEditMenuClearFileBookmark.MenuItem, SrcEditMenuClearAllBookmark.MenuItem]);