diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.h b/src/plugins/platforms/cocoa/qcocoaintegration.h index 664700cf51..f517311025 100644 --- a/src/plugins/platforms/cocoa/qcocoaintegration.h +++ b/src/plugins/platforms/cocoa/qcocoaintegration.h @@ -119,6 +119,8 @@ private: #endif QCocoaWindowManager m_windowManager; + + QMacNotificationObserver m_menuTrackingObserver; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QCocoaIntegration::Options) diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm index 2ce39ff897..ad767a0694 100644 --- a/src/plugins/platforms/cocoa/qcocoaintegration.mm +++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm @@ -168,6 +168,12 @@ QCocoaIntegration::QCocoaIntegration(const QStringList ¶mList) connect(qGuiApp, &QGuiApplication::focusWindowChanged, this, &QCocoaIntegration::focusWindowChanged); + + // Opening of a native menu should close all popup windows + m_menuTrackingObserver = QMacNotificationObserver(nil, + NSMenuDidBeginTrackingNotification, ^{ + QGuiApplicationPrivate::instance()->closeAllPopups(); + }); } QCocoaIntegration::~QCocoaIntegration() diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm index 2493d90724..f938d8ad5c 100644 --- a/src/plugins/platforms/cocoa/qcocoamenubar.mm +++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm @@ -25,11 +25,6 @@ QCocoaMenuBar::QCocoaMenuBar() { static_menubars.append(this); - // clicks into the menu bar should close all popup windows - static QMacNotificationObserver menuBarClickObserver(nil, NSMenuDidBeginTrackingNotification, ^{ - QGuiApplicationPrivate::instance()->closeAllPopups(); - }); - m_nativeMenu = [[NSMenu alloc] init]; qCDebug(lcQpaMenus) << "Constructed" << this << "with" << m_nativeMenu; }