diff options
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 6 | ||||
-rw-r--r-- | src/widgets/itemviews/qlistview.cpp | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index 19824911fa..2b8ee4f29c 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -3702,8 +3702,10 @@ void QAbstractItemView::startDrag(Qt::DropActions supportedActions) else if (supportedActions & Qt::CopyAction && dragDropMode() != QAbstractItemView::InternalMove) defaultDropAction = Qt::CopyAction; d->dropEventMoved = false; - if (drag->exec(supportedActions, defaultDropAction) == Qt::MoveAction && !d->dropEventMoved) - d->clearOrRemove(); + if (drag->exec(supportedActions, defaultDropAction) == Qt::MoveAction && !d->dropEventMoved) { + if (dragDropMode() != InternalMove || drag->target() == viewport()) + d->clearOrRemove(); + } d->dropEventMoved = false; // Reset the drop indicator d->dropIndicatorRect = QRect(); diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index 7e472d37c2..ce7b98d780 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -2901,8 +2901,10 @@ bool QIconModeViewBase::filterStartDrag(Qt::DropActions supportedActions) Qt::DropAction action = drag->exec(supportedActions, dd->defaultDropAction); draggedItems.clear(); // delete item, unless it has already been moved internally (see filterDropEvent) - if (action == Qt::MoveAction && !dd->dropEventMoved) - dd->clearOrRemove(); + if (action == Qt::MoveAction && !dd->dropEventMoved) { + if (dd->dragDropMode != QAbstractItemView::InternalMove || drag->target() == qq->viewport()) + dd->clearOrRemove(); + } dd->dropEventMoved = false; } return true; |