diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2021-05-25 17:09:09 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2021-05-27 22:18:32 +0200 |
commit | a3f3af8a8fb8f8b09d1685df5ab836244f850a62 (patch) | |
tree | d4ad87ca76f88b059037f7c0b251dcd21f3d5910 /src/plugins | |
parent | b2e053072dc96c59613e1fb765b4506a167785e8 (diff) |
macOS: don't show invisible separator items
Give QCocoaMenu access to the item's visibility property by adding a
public getter, and respect that state when syncing the separator to the
corresponding QCocoaNSMenuItems.
Pick-to: 6.1 5.15
Fixes: QTBUG-88651
Change-Id: I7e238e5d3be141ec8f4e8f6f3ab22d761094d2d2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenu.mm | 10 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenuitem.h | 1 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm index f3ee39160f..e22f619a6e 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.mm +++ b/src/plugins/platforms/cocoa/qcocoamenu.mm @@ -303,9 +303,13 @@ void QCocoaMenu::syncSeparatorsCollapsible(bool enable) for (NSMenuItem *item in m_nativeMenu.itemArray) { if (item.separatorItem) { - if (auto *cocoaItem = qt_objc_cast<QCocoaNSMenuItem *>(item).platformMenuItem) - cocoaItem->setVisible(!previousIsSeparator); - item.hidden = previousIsSeparator; + // hide item if previous was a separator, or if it's explicitly hidden + bool itemVisible = !previousIsSeparator; + if (auto *cocoaItem = qt_objc_cast<QCocoaNSMenuItem *>(item).platformMenuItem) { + cocoaItem->setVisible(!previousIsSeparator && cocoaItem->isVisible()); + itemVisible = cocoaItem->isVisible(); + } + item.hidden = !itemVisible; } if (!item.hidden) { diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.h b/src/plugins/platforms/cocoa/qcocoamenuitem.h index ca0340e76c..2962bdb26e 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.h +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.h @@ -117,6 +117,7 @@ public: inline bool isMerged() const { return m_merged; } inline bool isEnabled() const { return m_enabled && m_parentEnabled; } inline bool isSeparator() const { return m_isSeparator; } + inline bool isVisible() const { return m_isVisible; } QCocoaMenu *menu() const { return m_menu; } MenuRole effectiveRole() const; |