diff options
author | Gabriel de Dietrich <gabriel.dedietrich@qt.io> | 2018-04-17 15:36:09 -0700 |
---|---|---|
committer | Gabriel de Dietrich <gabriel.dedietrich@qt.io> | 2018-04-19 22:20:05 +0000 |
commit | 48defe41e1f6fb38800675922289dd7364fad8af (patch) | |
tree | 9d80b44c1b0097f9c52a3bbfccfb767ce96ed5dc /src/plugins/platforms/cocoa/qcocoamenuloader.mm | |
parent | 99290faa66eba7abe613d2d0df00e88434470f2e (diff) |
Cocoa Menus: Allow separators in app menu
We extend QCocoaNSMenuItem with separator items capabilities
and use it as any other custom item in the app menu.
Addition and removal of items in the app menu remains very
basic because that menu doesn't exist as such. Instead, it's
hinted through the QAction's menu role.
Change-Id: Ia13bfcc008c75e49fd21705d2528da5a85ed1c73
Task-number: QTBUG-63756
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoamenuloader.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenuloader.mm | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenuloader.mm b/src/plugins/platforms/cocoa/qcocoamenuloader.mm index d4009cf63b..9bd6108d0d 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuloader.mm +++ b/src/plugins/platforms/cocoa/qcocoamenuloader.mm @@ -272,18 +272,21 @@ - (NSMenuItem *)appSpecificMenuItem:(QCocoaMenuItem *)platformItem { + // No reason to create the item if it already exists. for (NSMenuItem *item in appMenu.itemArray) if ([item isMemberOfClass:[QCocoaNSMenuItem class]] - && static_cast<QCocoaNSMenuItem *>(item).platformMenuItem == platformItem) { - // No reason to create the item if it already exists. + && static_cast<QCocoaNSMenuItem *>(item).platformMenuItem == platformItem) return [[item retain] autorelease]; - } // Create an App-Specific menu item, insert it into the menu and return // it as an autorelease item. - QCocoaNSMenuItem *item = [[QCocoaNSMenuItem alloc] initWithPlatformMenuItem:platformItem]; + QCocoaNSMenuItem *item; + if (platformItem->isSeparator()) + item = [[QCocoaNSMenuItem separatorItemWithPlatformMenuItem:platformItem] retain]; + else + item = [[QCocoaNSMenuItem alloc] initWithPlatformMenuItem:platformItem]; - NSInteger location = [appMenu indexOfItem:lastAppSpecificItem]; + const auto location = [appMenu indexOfItem:lastAppSpecificItem]; if (!lastAppSpecificItem.separatorItem) [lastAppSpecificItem release]; |