summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoawindow.mm
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-03-24 07:37:43 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-03-24 07:38:02 +0100
commit135ebe4f3d268121047fdbfee49f2dd52006165e (patch)
tree6b303103f36e69e29cfa860b8b7afc584c55d6f3 /src/plugins/platforms/cocoa/qcocoawindow.mm
parente7feb956280105113b3e58f12e5f32f54199a95a (diff)
parent1e8f50a8d069c97ea6a4f00d664c12e594884f54 (diff)
Merge remote-tracking branch 'origin/5.5' into dev
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoawindow.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 8aed9da9c5..6c90e99238 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -371,6 +371,7 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw)
, m_synchedWindowState(Qt::WindowActive)
, m_windowModality(Qt::NonModal)
, m_windowUnderMouse(false)
+ , m_ignoreWindowShouldClose(false)
, m_inConstructor(true)
, m_inSetVisible(false)
, m_inSetGeometry(false)
@@ -442,9 +443,12 @@ QCocoaWindow::~QCocoaWindow()
m_parentCocoaWindow->removeChildWindow(this);
} else if (parent()) {
[m_contentView removeFromSuperview];
- } else if (m_qtView) {
- [[NSNotificationCenter defaultCenter] removeObserver:m_qtView
- name:nil object:m_nsWindow];
+ }
+
+ // Make sure to disconnect observer in all case if view is valid
+ // to avoid notifications received when deleting when using Qt::AA_NativeWindows attribute
+ if (m_qtView) {
+ [[NSNotificationCenter defaultCenter] removeObserver:m_qtView];
}
// The QNSView object may outlive the corresponding QCocoaWindow object,
@@ -1220,6 +1224,9 @@ void QCocoaWindow::windowDidEndLiveResize()
bool QCocoaWindow::windowShouldClose()
{
+ // might have been set from qnsview.mm
+ if (m_ignoreWindowShouldClose)
+ return false;
bool accepted = false;
QWindowSystemInterface::handleCloseEvent(window(), &accepted);
QWindowSystemInterface::flushWindowSystemEvents();