Handle drag leave when performing platform drag of docks or toolbars

The existing widget machinery works through mouse positions. In order to
correctly update state  when a drag moves outside of a window it needs
to see a move outside of the window. When the platform drag leaves the
window a move to the outside of the window is now faked to not keep the
layout in the hovered state of the last move event.

Fixes: QTBUG-122944
Pick-to: 6.6
Change-Id: I348f5281a200b78e6be4f11b3c25339d052783a5
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit d7fe948fdb79e919065875410dba14275a2a7478)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
David Redondo 2024-03-05 11:53:39 +01:00 committed by Qt Cherry-pick Bot
parent 2bc6b25c56
commit 157f7b47e4

View File

@ -1301,6 +1301,11 @@ bool QMainWindow::event(QEvent *event)
event->accept();
return true;
}
case QEvent::DragLeave:
if (!d->layout->draggingWidget)
break;
d->layout->hover(d->layout->draggingWidget, pos() - QPoint(-1, -1));
return true;
#endif
default:
break;