From 7da9fa289068ed742307c6b921442365130e0818 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Sat, 13 May 2017 13:24:21 +0700 Subject: QCocoaMenuBar: Keep smart reference to platform window MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ib3a5b071f1cc66992969a85a092f8111e57dea44 Task-number: QTBUG-60786 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/cocoa/qcocoamenubar.h | 2 +- src/plugins/platforms/cocoa/qcocoamenubar.mm | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src/plugins/platforms') 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 > m_menus; NSMenu *m_nativeMenu; - QCocoaWindow *m_window; + QPointer 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 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(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; } -- cgit v1.2.3