summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2022-05-16 21:42:23 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2022-05-26 12:44:22 +0200
commit2996ca031efcd97ef9866186ae53e96ed75c9fbf (patch)
treee915ae4ebbf79b340ca089ae92d71b23c8627ab1 /src/plugins/platforms/cocoa
parent734c9f2df26b12b89c8a4de4ae43a15726ff1886 (diff)
macOS: create application menu as QCocoaNSMenu with delegate
This way we can handle keyboard shortcuts for actions in that menu as well in our menuHasKeyEquivalent implementation. This allows the focus widget to accept the override, and e.g. a QKeySequenceEdit to record Cmd+Q which with a plain NSMenu will just quit the application. Pick-to: 6.3 6.2 Fixes: QTBUG-103590 Change-Id: I84597307aef8f0ab65d97d78e5aa15e5cf2e707d Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenuloader.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoansmenu.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoansmenu.mm7
3 files changed, 9 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenuloader.mm b/src/plugins/platforms/cocoa/qcocoamenuloader.mm
index 8357171776..6d3c668b87 100644
--- a/src/plugins/platforms/cocoa/qcocoamenuloader.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenuloader.mm
@@ -56,7 +56,7 @@
NSMenuItem *appItem = [[[NSMenuItem alloc] init] autorelease];
appItem.title = appName;
[theMenu addItem:appItem];
- appMenu = [[NSMenu alloc] initWithTitle:appName];
+ appMenu = [[QCocoaNSMenu alloc] initWithoutPlatformMenu:appName];
appItem.submenu = appMenu;
// About Application
diff --git a/src/plugins/platforms/cocoa/qcocoansmenu.h b/src/plugins/platforms/cocoa/qcocoansmenu.h
index e2415d53c5..533aba1a21 100644
--- a/src/plugins/platforms/cocoa/qcocoansmenu.h
+++ b/src/plugins/platforms/cocoa/qcocoansmenu.h
@@ -28,6 +28,7 @@ QT_DECLARE_NAMESPACED_OBJC_INTERFACE(QCocoaNSMenuDelegate, NSObject <NSMenuDeleg
QT_DECLARE_NAMESPACED_OBJC_INTERFACE(QCocoaNSMenu, NSMenu
@property (readonly, nonatomic) QCocoaMenu *platformMenu;
- (instancetype)initWithPlatformMenu:(QCocoaMenu *)menu;
+- (instancetype)initWithoutPlatformMenu:(NSString *)menu;
)
QT_DECLARE_NAMESPACED_OBJC_INTERFACE(QCocoaNSMenuItem, NSMenuItem
diff --git a/src/plugins/platforms/cocoa/qcocoansmenu.mm b/src/plugins/platforms/cocoa/qcocoansmenu.mm
index c6990b6b24..84a625ed66 100644
--- a/src/plugins/platforms/cocoa/qcocoansmenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoansmenu.mm
@@ -51,6 +51,13 @@ static NSString *qt_mac_removePrivateUnicode(NSString *string)
return self;
}
+- (instancetype)initWithoutPlatformMenu:(NSString *)title
+{
+ if (self = [super initWithTitle:title])
+ self.delegate = [QCocoaNSMenuDelegate sharedMenuDelegate];
+ return self;
+}
+
- (QCocoaMenu *)platformMenu
{
return _platformMenu.data();