XCB: Unset the connection's mousePressWindow if it's this window

In some rare cases it can delete the window before this is handled by
other calls, so rather than crashing we clean up.

Pick-to: 6.5 6.2 5.15
Change-Id: Iddcd9890f0c13f4130626b0ed9c5b32f5890208d
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit b8f9a8681347476f4db1719b38a67d7f9d3c74be)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit be78514b206aff3152a239c188fcc4e7aba5439a)
This commit is contained in:
Andy Shaw 2024-03-07 08:27:24 +01:00 committed by Qt Cherry-pick Bot
parent 0c661c1528
commit a86cd4dbee

View File

@ -540,6 +540,8 @@ void QXcbWindow::destroy()
doFocusOut();
if (connection()->mouseGrabber() == this)
connection()->setMouseGrabber(nullptr);
if (connection()->mousePressWindow() == this)
connection()->setMousePressWindow(nullptr);
if (m_syncCounter && connection()->hasXSync())
xcb_sync_destroy_counter(xcb_connection(), m_syncCounter);