diff options
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbwindow.cpp')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.cpp | 16 |
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() |