From 565f39aad1c02fda14f52fdd002eaba52abf8d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 28 Feb 2014 16:31:32 +0100 Subject: Don't assume a QBasicDrag will start and end over a QWindow A QBasicDrag is started from QBasicDrag::drag() through the drag manager, which may happen from e.g a widget. The event filter needs to look at events to more than just QWindows, otherwise the filter will miss eg. mouse release events that are sent to QWidget and not to the QWindow handle, and the drag goes on forever, causing invalid internal state when a new drag is then started. Change-Id: I5cee250e2c7552817bda0895d4c5794e12d26592 Reviewed-by: Friedemann Kleint --- src/gui/kernel/qsimpledrag.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qsimpledrag.cpp b/src/gui/kernel/qsimpledrag.cpp index dcf476e4fe..d53239e74f 100644 --- a/src/gui/kernel/qsimpledrag.cpp +++ b/src/gui/kernel/qsimpledrag.cpp @@ -116,6 +116,8 @@ void QBasicDrag::disableEventFilter() bool QBasicDrag::eventFilter(QObject *o, QEvent *e) { + Q_UNUSED(o); + if (!m_drag) { if (e->type() == QEvent::KeyRelease && static_cast(e)->key() == Qt::Key_Escape) { disableEventFilter(); @@ -125,9 +127,6 @@ bool QBasicDrag::eventFilter(QObject *o, QEvent *e) return false; } - if (!qobject_cast(o)) - return false; - switch (e->type()) { case QEvent::ShortcutOverride: // prevent accelerators from firing while dragging -- cgit v1.2.3