Fix crash with removed menus

Pick-to: 6.5 6.4 6.2
Fixes: QTBUG-111388
Change-Id: I9c9f0ad5cc02293197d7e77eeeec3ffa9d72a4af
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Joni Poikelin 2023-02-21 13:26:28 +02:00
parent 2fffa21111
commit 8dfca2ee71

View File

@ -355,8 +355,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;
}
@ -400,7 +403,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;
@ -408,10 +411,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;
}