summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp6
-rw-r--r--src/widgets/itemviews/qlistview.cpp6
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;