summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoni Poikelin <joni.poikelin@qt.io>2023-02-21 13:26:28 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-02-23 12:50:08 +0000
commit46f2dd0e14cdfcc4e56d42019a1d6dcb98826ca3 (patch)
tree1bdad5b4633d63c402fcc8eab17e6da1ed8aa6fd
parent6d301449fd36ccb3ea33dc58d41b44f5ba31ca3a (diff)
downloadqtbase-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.mm18
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;
}