summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews/qtablewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/itemviews/qtablewidget.cpp')
-rw-r--r--src/widgets/itemviews/qtablewidget.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp
index f01d392545..5072cc9240 100644
--- a/src/widgets/itemviews/qtablewidget.cpp
+++ b/src/widgets/itemviews/qtablewidget.cpp
@@ -2679,7 +2679,8 @@ void QTableWidget::dropEvent(QDropEvent *event) {
QModelIndex topIndex;
int col = -1;
int row = -1;
- if (d->dropOn(event, &row, &col, &topIndex)) {
+ // check whether a subclass has already accepted the event, ie. moved the data
+ if (!event->isAccepted() && d->dropOn(event, &row, &col, &topIndex)) {
const QModelIndexList indexes = selectedIndexes();
int top = INT_MAX;
int left = INT_MAX;
@@ -2701,9 +2702,11 @@ void QTableWidget::dropEvent(QDropEvent *event) {
}
event->accept();
- // Don't want QAbstractItemView to delete it because it was "moved" we already did it
- d->dropEventMoved = true;
}
+ // either we or a subclass accepted the move event, so assume that the data was
+ // moved and that QAbstractItemView shouldn't remove the source when QDrag::exec returns
+ if (event->isAccepted())
+ d->dropEventMoved = true;
}
QTableView::dropEvent(event);