mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
fix: menu state in macOS dock menus (#49626)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
@@ -109,7 +109,14 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (NSMenu*)applicationDockMenu:(NSApplication*)sender {
|
- (NSMenu*)applicationDockMenu:(NSApplication*)sender {
|
||||||
return menu_controller_ ? menu_controller_.menu : nil;
|
if (!menu_controller_)
|
||||||
|
return nil;
|
||||||
|
|
||||||
|
// Manually refresh menu state since menuWillOpen: is not called
|
||||||
|
// by macOS for dock menus for some reason before they are displayed.
|
||||||
|
NSMenu* menu = menu_controller_.menu;
|
||||||
|
[menu_controller_ refreshMenuTree:menu];
|
||||||
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)application:(NSApplication*)sender openFile:(NSString*)filename {
|
- (BOOL)application:(NSApplication*)sender openFile:(NSString*)filename {
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ class ElectronMenuModel;
|
|||||||
// Whether the menu is currently open.
|
// Whether the menu is currently open.
|
||||||
- (BOOL)isMenuOpen;
|
- (BOOL)isMenuOpen;
|
||||||
|
|
||||||
|
// Recursively refreshes the menu tree starting from |menu|, applying the
|
||||||
|
// model state (enabled, checked, hidden etc) to each menu item.
|
||||||
|
- (void)refreshMenuTree:(NSMenu*)menu;
|
||||||
|
|
||||||
// NSMenuDelegate methods this class implements. Subclasses should call super
|
// NSMenuDelegate methods this class implements. Subclasses should call super
|
||||||
// if extending the behavior.
|
// if extending the behavior.
|
||||||
- (void)menuWillOpen:(NSMenu*)menu;
|
- (void)menuWillOpen:(NSMenu*)menu;
|
||||||
|
|||||||
@@ -493,8 +493,6 @@ NSArray* ConvertSharingItemToNS(const SharingItem& item) {
|
|||||||
: NSControlStateValueOff;
|
: NSControlStateValueOff;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recursively refreshes the menu tree starting from |menu|, applying the
|
|
||||||
// model state to each menu item.
|
|
||||||
- (void)refreshMenuTree:(NSMenu*)menu {
|
- (void)refreshMenuTree:(NSMenu*)menu {
|
||||||
for (NSMenuItem* item in menu.itemArray) {
|
for (NSMenuItem* item in menu.itemArray) {
|
||||||
[self applyStateToMenuItem:item];
|
[self applyStateToMenuItem:item];
|
||||||
|
|||||||
Reference in New Issue
Block a user