diff options
author | Gabriel de Dietrich <gabriel.dedietrich@qt.io> | 2017-05-13 13:24:21 +0700 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-05-18 21:18:47 +0000 |
commit | 9954187adba4d26a1b1aa93874993f15d6d8a0b9 (patch) | |
tree | 187d8ec9d12d472db5ea2b1010df8286d6c064dc | |
parent | b8094e4b22412ba76d577b93300ee28b3302d959 (diff) |
QCocoaMenuBar: Keep smart reference to platform window
Change-Id: Ib3a5b071f1cc66992969a85a092f8111e57dea44
Task-number: QTBUG-60786
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 7da9fa289068ed742307c6b921442365130e0818)
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenubar.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamenubar.mm | 22 |
2 files changed, 12 insertions, 12 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.h b/src/plugins/platforms/cocoa/qcocoamenubar.h index 4870ca4103..0725e9db68 100644 --- a/src/plugins/platforms/cocoa/qcocoamenubar.h +++ b/src/plugins/platforms/cocoa/qcocoamenubar.h @@ -83,7 +83,7 @@ private: QList<QPointer<QCocoaMenu> > m_menus; NSMenu *m_nativeMenu; - QCocoaWindow *m_window; + QPointer<QCocoaWindow> m_window; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm index a95ffc2f9f..82c405baa6 100644 --- a/src/plugins/platforms/cocoa/qcocoamenubar.mm +++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm @@ -52,8 +52,7 @@ QT_BEGIN_NAMESPACE static QList<QCocoaMenuBar*> static_menubars; -QCocoaMenuBar::QCocoaMenuBar() : - m_window(0) +QCocoaMenuBar::QCocoaMenuBar() { static_menubars.append(this); @@ -79,7 +78,7 @@ QCocoaMenuBar::~QCocoaMenuBar() [m_nativeMenu release]; static_menubars.removeOne(this); - if (m_window && m_window->menubar() == this) { + if (!m_window.isNull() && m_window->menubar() == this) { m_window->setMenubar(0); // Delete the children first so they do not cause @@ -92,9 +91,10 @@ QCocoaMenuBar::~QCocoaMenuBar() bool QCocoaMenuBar::needsImmediateUpdate() { - if (m_window && m_window->window()->isActive()) { - return true; - } else if (!m_window) { + if (!m_window.isNull()) { + if (m_window->window()->isActive()) + return true; + } else { // Only update if the focus/active window has no // menubar, which means it'll be using this menubar. // This is to avoid a modification in a parentless @@ -221,11 +221,11 @@ void QCocoaMenuBar::handleReparent(QWindow *newParentWindow) qDebug() << "QCocoaMenuBar" << this << "handleReparent" << newParentWindow; #endif - if (m_window) - m_window->setMenubar(NULL); + if (!m_window.isNull()) + m_window->setMenubar(nullptr); - if (newParentWindow == NULL) { - m_window = NULL; + if (newParentWindow == nullptr) { + m_window.clear(); } else { newParentWindow->create(); m_window = static_cast<QCocoaWindow*>(newParentWindow->handle()); @@ -246,7 +246,7 @@ QCocoaWindow *QCocoaMenuBar::findWindowForMenubar() QCocoaMenuBar *QCocoaMenuBar::findGlobalMenubar() { foreach (QCocoaMenuBar *mb, static_menubars) { - if (mb->m_window == NULL) + if (mb->m_window.isNull()) return mb; } |