diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2013-04-24 14:00:28 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-25 17:56:26 +0200 |
commit | 220b2b92b62fb6c45a31e2a8f80e26f115166137 (patch) | |
tree | 919c242e8addc455a2bde20df408e15582406bf5 /src/plugins/platforms/cocoa/qcocoamenu.mm | |
parent | 370e89f06465a4d61c7b72291115cd7b5a0d576a (diff) |
Cocoa: Improve text heuristic menu item syncing logic
Don't try anything after the original syncing, particularly after
changing the menu item's text. Also, don't try anything if the menu
item cannot be linked up to a menubar (see QTBUG-30756). This latter
point requires extra syncing after adding a menu in the menubar.
Finally, to be able to find the menubar, we need to clean the code for
moc's eyes.
Task-number: QTBUG-30756
Task-number: QTBUG-30812
Change-Id: I88fad663f1c35d03a0cb167d1723d16f590918c0
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoamenu.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenu.mm | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm index df338a1109..9020aef600 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.mm +++ b/src/plugins/platforms/cocoa/qcocoamenu.mm @@ -271,8 +271,11 @@ void QCocoaMenu::syncSeparatorsCollapsible(bool enable) NSArray *itemArray = [m_nativeMenu itemArray]; for (unsigned int i = 0; i < [itemArray count]; ++i) { NSMenuItem *item = reinterpret_cast<NSMenuItem *>([itemArray objectAtIndex:i]); - if ([item isSeparatorItem]) + if ([item isSeparatorItem]) { + QCocoaMenuItem *cocoaItem = reinterpret_cast<QCocoaMenuItem *>([item tag]); + cocoaItem->setVisible(!previousIsSeparator); [item setHidden:previousIsSeparator]; + } if (![item isHidden]) { previousItem = item; @@ -281,8 +284,11 @@ void QCocoaMenu::syncSeparatorsCollapsible(bool enable) } // We now need to check the final item since we don't want any separators at the end of the list. - if (previousItem && previousIsSeparator) + if (previousItem && previousIsSeparator) { + QCocoaMenuItem *cocoaItem = reinterpret_cast<QCocoaMenuItem *>([previousItem tag]); + cocoaItem->setVisible(false); [previousItem setHidden:YES]; + } } else { foreach (QCocoaMenuItem *item, m_menuItems) { if (!item->isSeparator()) @@ -378,6 +384,11 @@ QPlatformMenuItem *QCocoaMenu::menuItemForTag(quintptr tag) const return 0; } +QList<QCocoaMenuItem *> QCocoaMenu::items() const +{ + return m_menuItems; +} + QList<QCocoaMenuItem *> QCocoaMenu::merged() const { QList<QCocoaMenuItem *> result; |