diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index a7f1931947..c9481e892f 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -918,9 +918,10 @@ void QListView::dropEvent(QDropEvent *event) // only generate a move when not same row or behind itself if (r != pIndex.row() && r != pIndex.row() + 1) { // try to move (preserves selection) - dataMoved |= model()->moveRow(QModelIndex(), pIndex.row(), QModelIndex(), r); - if (!dataMoved) // can't move - abort and let QAbstractItemView handle this - break; + const bool moved = model()->moveRow(QModelIndex(), pIndex.row(), QModelIndex(), r); + if (!moved) + continue; // maybe it'll work for other rows + dataMoved = true; // success } else { // move onto itself is blocked, don't delete anything dataMoved = true; diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp index 977cb4e301..f0ac4a78fe 100644 --- a/src/widgets/itemviews/qtableview.cpp +++ b/src/widgets/itemviews/qtableview.cpp @@ -3155,9 +3155,10 @@ void QTableView::dropEvent(QDropEvent *event) // only generate a move when not same row or behind itself if (r != pIndex.row() && r != pIndex.row() + 1) { // try to move (preserves selection) - dataMoved |= model()->moveRow(QModelIndex(), pIndex.row(), QModelIndex(), r); - if (!dataMoved) // can't move - abort and let QAbstractItemView handle this - break; + const bool moved = model()->moveRow(QModelIndex(), pIndex.row(), QModelIndex(), r); + if (!moved) + continue; // maybe it'll work for other rows + dataMoved = true; // success } else { // move onto itself is blocked, don't delete anything dataMoved = true;