diff options
author | Liang Qi <liang.qi@qt.io> | 2018-02-16 08:54:58 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-02-16 08:54:58 +0100 |
commit | 942ab490724fcc9544e786e5783718e1a07aa50b (patch) | |
tree | feb7d3ff716edb37b2ca60e33c05adf8777bd964 /src/plugins/platforms/cocoa/qcocoansmenu.mm | |
parent | 0fb8271a467202990c90321066e40faed640a7a8 (diff) | |
parent | 24adaa9a742e6f95ff897d0eb9a2bce0527dd042 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
src/corelib/tools/tools.pri
Change-Id: I705630f9cecbf0ce51a22fc6116b8c49611259e9
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoansmenu.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoansmenu.mm | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoansmenu.mm b/src/plugins/platforms/cocoa/qcocoansmenu.mm index 996a4ff194..6be2569dbc 100644 --- a/src/plugins/platforms/cocoa/qcocoansmenu.mm +++ b/src/plugins/platforms/cocoa/qcocoansmenu.mm @@ -40,6 +40,8 @@ #import "qcocoansmenu.h" #include "qcocoamenu.h" #include "qcocoamenuitem.h" +#include "qcocoamenubar.h" +#include "qcocoawindow.h" #import "qnsview.h" #include <QtCore/qmetaobject.h> @@ -291,6 +293,19 @@ static NSString *qt_mac_removePrivateUnicode(NSString* string) return nil; } +// Cocoa will query the menu item's target for the worksWhenModal selector. +// So we need to implement this to allow the items to be handled correctly +// when a modal dialog is visible. +- (BOOL)worksWhenModal +{ + if (!QGuiApplication::modalWindow()) + return YES; + const auto &qpaMenu = static_cast<QCocoaNSMenu *>(self).qpaMenu; + if (auto *mb = qobject_cast<QCocoaMenuBar *>(qpaMenu->menuParent())) + return QGuiApplication::modalWindow()->handle() == mb->cocoaWindow() ? YES : NO; + return YES; +} + @end #undef CHECK_MENU_CLASS |