IDE: Restore the old working code for the ecGotoBookmarks, ecToggleBookmarks command (direct/root bookmark popup). This was incorrectly removed in a555d027da . Issue #39540

This commit is contained in:
Martin 2023-02-01 20:14:37 +01:00
parent d195570688
commit 6d768e7921
2 changed files with 42 additions and 26 deletions

View File

@ -80,6 +80,9 @@ type
private
function GetSection: TIDEMenuSection;
protected
procedure AddMenuItem(ACommand: TIDEMenuCommand); virtual;
procedure AddMenuItems(ACommands: array of TIDEMenuCommand);
procedure DoOnMenuItemClick(Sender: TObject);
procedure DoOnMenuPopup(Sender: TObject);
procedure RefreshMenu; virtual;
property Section: TIDEMenuSection read GetSection;
@ -248,6 +251,28 @@ begin
DropdownMenu.OnPopup := @DoOnMenuPopup;
end;
procedure TIDEToolButton_WithArrow.AddMenuItem(ACommand: TIDEMenuCommand);
var
Itm: TMenuItem;
begin
Itm := TMenuItem.Create(DropdownMenu);
Itm.Caption := ACommand.Caption;
Itm.ShortCut := ACommand.Command.AsShortCut;
Itm.ImageIndex := ACommand.ImageIndex;
Itm.Enabled := ACommand.Enabled;
Itm.OnClick := @DoOnMenuItemClick;
Itm.Tag := PtrInt(ACommand);
DropdownMenu.Items.Add(Itm);
end;
procedure TIDEToolButton_WithArrow.AddMenuItems(ACommands: array of TIDEMenuCommand);
var
Cmd: TIDEMenuCommand;
begin
for Cmd in ACommands do
AddMenuItem(Cmd);
end;
function TIDEToolButton_WithArrow.GetSection: TIDEMenuSection;
begin
Result:=nil;
@ -272,6 +297,14 @@ begin
DropdownMenu.Items.Assign(Section.MenuItem);
end;
procedure TIDEToolButton_WithArrow.DoOnMenuItemClick(Sender: TObject);
var
Cmd: TIDEMenuCommand;
begin
Cmd:=TIDEMenuCommand((Sender as TMenuItem).Tag);
Cmd.DoOnClick; // Sender in handler should be a command but not a menu item
end;
{ TIDEToolButton_DropDown }
procedure TIDEToolButton_DropDown.DoOnAdded;

View File

@ -1881,20 +1881,12 @@ end;
{ TToolButton_GotoBookmarks }
procedure TToolButton_GotoBookmarks.RefreshMenu;
var
cmd: TIDEMenuCommand;
begin
for cmd in SrcEditMenuGotoBookmark do
if cmd <> nil then begin
cmd.CreateNewMenuItem;
DropdownMenu.Items.Add(cmd.MenuItem);
end;
AddMenuItems(SrcEditMenuGotoBookmark);
DropdownMenu.Items.AddSeparator;
SrcEditMenuPrevBookmark.CreateNewMenuItem;
SrcEditMenuNextBookmark.CreateNewMenuItem;
DropdownMenu.Items.Add([
SrcEditMenuPrevBookmark.MenuItem,
SrcEditMenuNextBookmark.MenuItem]);
AddMenuItems([
SrcEditMenuPrevBookmark,
SrcEditMenuNextBookmark]);
end;
class procedure TToolButton_GotoBookmarks.ShowAloneMenu(Sender: TObject); // on shortcuts only
@ -1911,23 +1903,14 @@ end;
{ TToolButton_ToggleBookmarks }
procedure TToolButton_ToggleBookmarks.RefreshMenu;
var
cmd: TIDEMenuCommand;
begin
for cmd in SrcEditMenuToggleBookmark do
if cmd <> nil then begin
cmd.CreateNewMenuItem;
DropdownMenu.Items.Add(cmd.MenuItem);
end;
AddMenuItems(SrcEditMenuToggleBookmark);
DropdownMenu.Items.AddSeparator;
SrcEditMenuSetFreeBookmark.CreateNewMenuItem;
DropdownMenu.Items.Add(SrcEditMenuSetFreeBookmark.MenuItem);
AddMenuItem(SrcEditMenuSetFreeBookmark);
DropdownMenu.Items.AddSeparator;
SrcEditMenuClearFileBookmark.CreateNewMenuItem;
SrcEditMenuClearAllBookmark.CreateNewMenuItem;
DropdownMenu.Items.Add([
SrcEditMenuClearFileBookmark.MenuItem,
SrcEditMenuClearAllBookmark.MenuItem]);
AddMenuItems([
SrcEditMenuClearFileBookmark,
SrcEditMenuClearAllBookmark]);
end;
class procedure TToolButton_ToggleBookmarks.ShowAloneMenu(Sender: TObject); // on shortcuts only