Fix rejecting drag enter events in QML DropArea

Don't initiate a drag and drop if the event was rejected.

What happens is:
QQuickDropArea::dragEnterEvent() sets d->containsDrag = true
QQuickDropArea::dragLeaveEvent() sets d->containsDrag = false
HOWEVER, when the enter event is rejected, the leave event is
never delivered, and the drop area remains blocked because it
thinks the first drag action is not done yet.

Change-Id: I74c53fbe778c954e4aa2f22f393318c4938a5afe
Task-number: QTBUG-39453
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
This commit is contained in:
Sebastian Sauer 2014-06-28 02:09:19 +07:00 committed by Niels Weber
parent c2ef3674a3
commit 570c848e6d
1 changed files with 2 additions and 0 deletions

View File

@ -264,6 +264,8 @@ void QQuickDropArea::dragEnterEvent(QDragEnterEvent *event)
QQuickDropEvent dragTargetEvent(d, event);
emit entered(&dragTargetEvent);
if (!event->isAccepted())
return;
d->containsDrag = true;
if (QQuickDragMimeData *dragMime = qobject_cast<QQuickDragMimeData *>(const_cast<QMimeData *>(mimeData)))