UPD: auto update GoBackward/GoForward Tool Bar Menu after Dark/Light is Switched on macOS

This commit is contained in:
rich2014 2026-01-28 12:02:17 +08:00
commit fd02b5c048
2 changed files with 49 additions and 40 deletions

View file

@ -15,7 +15,7 @@ uses
uDarwinApplication, uDarwinPanel, uDarwinFile, uDarwinUtil,
uDarwinFinder, uDarwinFinderModel,
uDarwinFileView, uDarwinFileViewHistory,
CocoaAll, CocoaConfig, CocoaToolBar, Cocoa_Extra,
CocoaAll, CocoaConfig, CocoaToolBar, CocoaThemes, Cocoa_Extra,
LResources, uTranslator, Translations;
procedure initCocoaModernFormConfig;
@ -100,6 +100,7 @@ begin
fMain.onFileViewUpdated:= @onFileViewUpdated;
toolBarMenuHandler:= TToolBarMenuHandler.Create;
TCocoaThemeServices.addObserver( toolBarMenuHandler );
doInitConfig;
end;

View file

@ -39,6 +39,42 @@ begin
end;
end;
procedure updateGoBackwardToolbarMenu;
var
item: NSToolbarItem;
menu: NSMenu;
begin
item:= TCocoaToolBarUtils.findItemByIdentifier( frmMain, 'MainForm.GoBackward' );
if NOT Assigned(item) then
Exit;
item.setEnabled( frmMain.ActiveFrame.hasPrevHistory );
menu:= TDarwinFileViewHistoryUtil.createBackwardMenu(
TCocoaToolBarUtils.getNSView(item),
frmMain.ActiveFrame,
@goToHistoryAction,
5 );
NSMenuToolbarItem(item).setMenu( menu );
menu.release;
end;
procedure updateGoForwardToolbarMenu;
var
item: NSToolbarItem;
menu: NSMenu;
begin
item:= TCocoaToolBarUtils.findItemByIdentifier( frmMain, 'MainForm.GoForward' );
if NOT Assigned(item) then
Exit;
item.setEnabled( frmMain.ActiveFrame.hasNextHistory );
menu:= TDarwinFileViewHistoryUtil.createForwardMenu(
TCocoaToolBarUtils.getNSView(item),
frmMain.ActiveFrame,
@goToHistoryAction,
5 );
NSMenuToolbarItem(item).setMenu( menu );
menu.release;
end;
procedure onFileViewUpdated( const fileView: TFileView );
procedure updateShowMode;
@ -59,42 +95,6 @@ procedure onFileViewUpdated( const fileView: TFileView );
itemGroupWrapper.lclSetSelectedIndex( 2 );
end;
procedure updateBackward;
var
item: NSToolbarItem;
menu: NSMenu;
begin
item:= TCocoaToolBarUtils.findItemByIdentifier( frmMain, 'MainForm.GoBackward' );
if NOT Assigned(item) then
Exit;
item.setEnabled( fileView.hasPrevHistory );
menu:= TDarwinFileViewHistoryUtil.createBackwardMenu(
TCocoaToolBarUtils.getNSView(item),
frmMain.ActiveFrame,
@goToHistoryAction,
5 );
NSMenuToolbarItem(item).setMenu( menu );
menu.release;
end;
procedure updateForward;
var
item: NSToolbarItem;
menu: NSMenu;
begin
item:= TCocoaToolBarUtils.findItemByIdentifier( frmMain, 'MainForm.GoForward' );
if NOT Assigned(item) then
Exit;
item.setEnabled( fileView.hasNextHistory );
menu:= TDarwinFileViewHistoryUtil.createForwardMenu(
TCocoaToolBarUtils.getNSView(item),
frmMain.ActiveFrame,
@goToHistoryAction,
5 );
NSMenuToolbarItem(item).setMenu( menu );
menu.release;
end;
procedure updateRelyOnFileSystem;
var
enabled: Boolean;
@ -119,8 +119,8 @@ procedure onFileViewUpdated( const fileView: TFileView );
begin
updateShowMode;
updateBackward;
updateForward;
updateGoBackwardToolbarMenu;
updateGoForwardToolbarMenu;
updateRelyOnFileSystem;
end;
@ -191,7 +191,7 @@ type
{ TToolBarMenuHandler }
TToolBarMenuHandler = class
TToolBarMenuHandler = class( ICocoaThemeObserver )
public
procedure showHotlist( Sender: TObject );
procedure showFavoriteTabs( Sender: TObject );
@ -202,6 +202,8 @@ type
procedure showFinderTagSelectorPanel( Sender: TObject );
procedure onFinderTagSelectorPanelClose( const cancel: Boolean; const tagNames: NSArray );
procedure searchOneFinderTagAction( Sender: TObject );
procedure onThemeChanged;
end;
var
@ -263,6 +265,12 @@ begin
TDarwinFinderModelUtil.searchFilesForTagName( tagName, @darwinSearchResultHandler.onSearchFinderTagComplete );
end;
procedure TToolBarMenuHandler.onThemeChanged;
begin
updateGoBackwardToolbarMenu;
updateGoForwardToolbarMenu;
end;
procedure onGetFolderMenu( const menu: TMenu );
var
items: TMenuItem;