summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@digia.com>2014-05-02 20:52:25 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-14 10:20:22 +0200
commit54cc48176086a5f529c679141e9dde7911abda5d (patch)
tree978cb22921b8b499164c6d2adcb9c9332df38d03
parent9a747cb5b7866d440211aa1dc4e07dd4ff914c2c (diff)
Cocoa: Clear window hash entry in ~QCocoaWindow.
The Cocoa platform plugin maintains a NSWindow-> QCocoaWindow hash. Hash entries was not properly cleared on QCocoaWindow destruction. Add call to clear the entry for the destroyed window. Make QCocoaIntegration remove the key from the hash in this case instead of setting it to 0. Task-number: QTBUG-37597 Change-Id: I3adaeee45069aea1d2ecacd948298302eafe1929 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm5
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm3
2 files changed, 7 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
index c4398622e8..7fa3adc521 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.mm
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm
@@ -520,7 +520,10 @@ NSToolbar *QCocoaIntegration::toolbar(QWindow *window) const
void QCocoaIntegration::setWindow(NSWindow* nsWindow, QCocoaWindow *window)
{
- mWindows.insert(nsWindow, window);
+ if (window == 0)
+ mWindows.remove(nsWindow);
+ else
+ mWindows.insert(nsWindow, window);
}
QCocoaWindow *QCocoaIntegration::window(NSWindow *window)
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 60152b56b2..d355dd0ed1 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -420,6 +420,9 @@ QCocoaWindow::~QCocoaWindow()
qDebug() << "QCocoaWindow::~QCocoaWindow" << this;
#endif
+ if (QCocoaIntegration *ci = QCocoaIntegration::instance())
+ ci->setWindow(m_nsWindow, 0);
+
QCocoaAutoReleasePool pool;
[m_nsWindow setContentView:nil];
[m_nsWindow.helper detachFromPlatformWindow];