summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbwindow.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 0a4e3a5107..9921ed5da5 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -616,13 +616,17 @@ QXcbWindow::~QXcbWindow()
}
destroy();
+}
- if (isForeignWindow()) {
- if (connection()->mouseGrabber() == this)
- connection()->setMouseGrabber(Q_NULLPTR);
- if (connection()->mousePressWindow() == this)
- connection()->setMousePressWindow(Q_NULLPTR);
- }
+QXcbForeignWindow::~QXcbForeignWindow()
+{
+ // Clear window so that destroy() does not affect it
+ m_window = 0;
+
+ if (connection()->mouseGrabber() == this)
+ connection()->setMouseGrabber(nullptr);
+ if (connection()->mousePressWindow() == this)
+ connection()->setMousePressWindow(nullptr);
}
void QXcbWindow::destroy()