summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-08-07 18:12:02 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2018-08-07 18:12:02 +0000
commitee2e38490d51667e878ed1732df387a6d9f2a5fe (patch)
tree4f3b02ab7220326d918b199d60fb33fc497d6dac /src/plugins/platforms/cocoa
parent491e427bb2d3cafccbb26d2ca3b7e128d786a564 (diff)
parent053e7cce79d4bef99ec85101b0d22bbb171072c5 (diff)
Merge "Merge remote-tracking branch 'origin/5.11' into dev" into refs/staging/dev
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenuloader.mm33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenuloader.mm b/src/plugins/platforms/cocoa/qcocoamenuloader.mm
index 345b370826..5610c36ea1 100644
--- a/src/plugins/platforms/cocoa/qcocoamenuloader.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenuloader.mm
@@ -213,26 +213,23 @@
Q_ASSERT(mainMenu);
#endif
// Grab the app menu out of the current menu.
- const int numItems = mainMenu.numberOfItems;
- NSMenuItem *oldAppMenuItem = nil;
- for (int i = 0; i < numItems; ++i) {
- NSMenuItem *item = [mainMenu itemAtIndex:i];
- if (item.submenu == appMenu) {
- oldAppMenuItem = item;
- [oldAppMenuItem retain];
- [mainMenu removeItemAtIndex:i];
- break;
+ auto unparentAppMenu = ^bool (NSMenu *supermenu) {
+ auto index = [supermenu indexOfItemWithSubmenu:appMenu];
+ if (index != -1) {
+ [supermenu removeItemAtIndex:index];
+ return true;
}
- }
+ return false;
+ };
- if (oldAppMenuItem) {
- oldAppMenuItem.submenu = nil;
- [oldAppMenuItem release];
- NSMenuItem *appMenuItem = [[NSMenuItem alloc] initWithTitle:@"Apple"
- action:nil keyEquivalent:@""];
- appMenuItem.submenu = appMenu;
- [menu insertItem:appMenuItem atIndex:0];
- }
+ if (!mainMenu || !unparentAppMenu(mainMenu))
+ if (appMenu.supermenu)
+ unparentAppMenu(appMenu.supermenu);
+
+ NSMenuItem *appMenuItem = [[NSMenuItem alloc] initWithTitle:@"Apple"
+ action:nil keyEquivalent:@""];
+ appMenuItem.submenu = appMenu;
+ [menu insertItem:appMenuItem atIndex:0];
}
- (NSMenu *)menu