diff options
author | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-10-06 11:59:47 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-10-06 11:59:47 +0200 |
commit | f49d5b578cfca311654e09a5161588401fc3815a (patch) | |
tree | 1d97f3e21bf13b4539dc4d9d934fcd3ea92516ec /src/plugins/platforms/cocoa/qcocoamenuitem.mm | |
parent | 848e95025297f8f56443ea7b22a1ddca1cc63cd8 (diff) | |
parent | 0edf68120bc72d35d5fe29c84467f5afeacb0585 (diff) |
Merge remote-tracking branch 'origin/5.3' into 5.4
Change-Id: I132bb6cce68e9f8413200f7ee75586bd1cada38c
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoamenuitem.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenuitem.mm | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.mm b/src/plugins/platforms/cocoa/qcocoamenuitem.mm index d0d1e7e8b8..3d3b6bf598 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.mm +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.mm @@ -132,13 +132,19 @@ void QCocoaMenuItem::setMenu(QPlatformMenu *menu) { if (menu == m_menu) return; - if (m_menu && COCOA_MENU_ANCESTOR(m_menu) == this) - SET_COCOA_MENU_ANCESTOR(m_menu, 0); + + if (m_menu) { + if (COCOA_MENU_ANCESTOR(m_menu) == this) + SET_COCOA_MENU_ANCESTOR(m_menu, 0); + if (m_menu->containingMenuItem() == this) + m_menu->setContainingMenuItem(0); + } QCocoaAutoReleasePool pool; m_menu = static_cast<QCocoaMenu *>(menu); if (m_menu) { SET_COCOA_MENU_ANCESTOR(m_menu, this); + m_menu->setContainingMenuItem(this); } else { // we previously had a menu, but no longer // clear out our item so the nexy sync() call builds a new one @@ -147,6 +153,12 @@ void QCocoaMenuItem::setMenu(QPlatformMenu *menu) } } +void QCocoaMenuItem::clearMenu(QCocoaMenu *menu) +{ + if (menu == m_menu) + m_menu = 0; +} + void QCocoaMenuItem::setVisible(bool isVisible) { m_isVisible = isVisible; |