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 9b889ea36d..bd89f43ca1 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -3701,8 +3701,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 1f3b22e8f8..27b4402e88 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -2898,8 +2898,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; |