summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2016-10-12 15:04:11 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2016-10-13 15:56:12 +0000
commit2f505b79a49bdf5ba8d084e13ab339bcf956c849 (patch)
treebbd32bfd30ab4f0877c64dc242f79a0c47ebe77c /src/plugins
parent1d6eb70dcec105af28d6a5e9b59d56c895c70389 (diff)
macOS: Use QPointer to track QNSView -> QCocoaWindow
Change-Id: I4de581dda03d25e781112eff34de28dfd1797a7f Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm7
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h3
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm6
3 files changed, 1 insertions, 15 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index c75090f0c2..6700bc28a9 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -433,13 +433,6 @@ QCocoaWindow::~QCocoaWindow()
if (window()->type() != Qt::ForeignWindow)
[[NSNotificationCenter defaultCenter] removeObserver:m_view];
- // The QNSView object may outlive the corresponding QCocoaWindow object,
- // for example during app shutdown when the QNSView is embedded in a
- // foregin NSView hiearchy. Clear the pointers to the QWindow/QCocoaWindow
- // here to make sure QNSView does not dereference stale pointers.
- if (window()->type() != Qt::ForeignWindow)
- [qnsview_cast(m_view) clearQWindowPointers];
-
// While it is unlikely that this window will be in the popup stack
// during deletetion we clear any pointers here to make sure.
if (QCocoaIntegration::instance()) {
diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h
index 963b29ebbb..57b159bbf5 100644
--- a/src/plugins/platforms/cocoa/qnsview.h
+++ b/src/plugins/platforms/cocoa/qnsview.h
@@ -65,7 +65,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper));
uchar *m_maskData;
bool m_shouldInvalidateWindowShadow;
QPointer<QWindow> m_window;
- QCocoaWindow *m_platformWindow;
+ QPointer<QCocoaWindow> m_platformWindow;
NSTrackingArea *m_trackingArea;
Qt::MouseButtons m_buttons;
Qt::MouseButtons m_acceptedMouseDowns;
@@ -92,7 +92,6 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper));
- (id)init;
- (id)initWithQWindow:(QWindow *)window platformWindow:(QCocoaWindow *) platformWindow;
-- (void) clearQWindowPointers;
#ifndef QT_NO_OPENGL
- (void)setQCocoaGLContext:(QCocoaGLContext *)context;
#endif
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index be2342d51e..1f92dc82d6 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -229,12 +229,6 @@ static bool _q_dontOverrideCtrlLMB = false;
return self;
}
-- (void) clearQWindowPointers
-{
- m_window = 0;
- m_platformWindow = 0;
-}
-
#ifndef QT_NO_OPENGL
- (void) setQCocoaGLContext:(QCocoaGLContext *)context
{