diff options
author | Joni Poikelin <joni.poikelin@qt.io> | 2023-02-21 13:26:28 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-02-23 12:50:08 +0000 |
commit | 46f2dd0e14cdfcc4e56d42019a1d6dcb98826ca3 (patch) | |
tree | 1bdad5b4633d63c402fcc8eab17e6da1ed8aa6fd | |
parent | 6d301449fd36ccb3ea33dc58d41b44f5ba31ca3a (diff) | |
download | qtbase-46f2dd0e14cdfcc4e56d42019a1d6dcb98826ca3.tar.gz |
Fix crash with removed menus
Fixes: QTBUG-111388
Change-Id: I9c9f0ad5cc02293197d7e77eeeec3ffa9d72a4af
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 8dfca2ee717289b334b7ec7a5a9cc9a3d8e9654a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenubar.mm | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm index 60068b8840..5298997271 100644 --- a/src/plugins/platforms/cocoa/qcocoamenubar.mm +++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm @@ -354,8 +354,11 @@ void QCocoaMenuBar::insertWindowMenu() QList<QCocoaMenuItem*> QCocoaMenuBar::merged() const { QList<QCocoaMenuItem*> r; - for (auto menu : std::as_const(m_menus)) + for (auto menu : std::as_const(m_menus)) { + if (!menu) + continue; r.append(menu->merged()); + } return r; } @@ -399,7 +402,7 @@ bool QCocoaMenuBar::shouldDisable(QCocoaWindow *active) const QPlatformMenu *QCocoaMenuBar::menuForTag(quintptr tag) const { for (auto menu : std::as_const(m_menus)) - if (menu->tag() == tag) + if (menu && menu->tag() == tag) return menu; return nullptr; @@ -407,10 +410,13 @@ QPlatformMenu *QCocoaMenuBar::menuForTag(quintptr tag) const NSMenuItem *QCocoaMenuBar::itemForRole(QPlatformMenuItem::MenuRole role) { - for (auto menu : std::as_const(m_menus)) - for (auto *item : menu->items()) - if (item->effectiveRole() == role) - return item->nsItem(); + for (auto menu : std::as_const(m_menus)) { + if (menu) { + for (auto *item : menu->items()) + if (item->effectiveRole() == role) + return item->nsItem(); + } + } return nil; } |