diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2014-11-24 13:37:06 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2014-11-24 13:39:13 +0100 |
commit | 34aba4724f196e34ed02cf50073f41968f119bb6 (patch) | |
tree | 0ebdfcabda989ab76ee6de53c6461553c7a767a5 /src/widgets/itemviews | |
parent | b86b2a742afae118bf974c82ba966ddb0cae4afb (diff) | |
parent | b1cf07f495e10c93e53651ac03e46ebdaea0a97e (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
src/corelib/io/qiodevice.cpp
src/plugins/bearer/linux_common/qofonoservice_linux.cpp
src/plugins/bearer/linux_common/qofonoservice_linux_p.h
src/plugins/platforms/android/qandroidplatformtheme.cpp
src/tools/bootstrap/bootstrap.pro
src/widgets/styles/qmacstyle_mac.mm
Change-Id: Ia02aab6c4598ce74e9c30bb4666d5e2ef000f99b
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 6 | ||||
-rw-r--r-- | src/widgets/itemviews/qabstractitemview_p.h | 16 | ||||
-rw-r--r-- | src/widgets/itemviews/qlistview.cpp | 6 |
3 files changed, 15 insertions, 13 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index a6361bd750..9d38a330c8 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -1905,7 +1905,7 @@ void QAbstractItemView::dragEnterEvent(QDragEnterEvent *event) && (event->source() != this|| !(event->possibleActions() & Qt::MoveAction))) return; - if (d_func()->canDecode(event)) { + if (d_func()->canDrop(event)) { event->accept(); setState(DraggingState); } else { @@ -1934,7 +1934,7 @@ void QAbstractItemView::dragMoveEvent(QDragMoveEvent *event) QModelIndex index = indexAt(event->pos()); d->hover = index; if (!d->droppingOnItself(event, index) - && d->canDecode(event)) { + && d->canDrop(event)) { if (index.isValid() && d->showDropIndicator) { QRect rect = visualRect(index); @@ -1979,7 +1979,7 @@ void QAbstractItemView::dragMoveEvent(QDragMoveEvent *event) } } d->viewport->update(); - } // can decode + } // can drop if (d->shouldAutoScroll(event->pos())) startAutoScroll(); diff --git a/src/widgets/itemviews/qabstractitemview_p.h b/src/widgets/itemviews/qabstractitemview_p.h index 047533b22c..c3bd1fb504 100644 --- a/src/widgets/itemviews/qabstractitemview_p.h +++ b/src/widgets/itemviews/qabstractitemview_p.h @@ -164,13 +164,15 @@ public: #ifndef QT_NO_DRAGANDDROP virtual QAbstractItemView::DropIndicatorPosition position(const QPoint &pos, const QRect &rect, const QModelIndex &idx) const; - inline bool canDecode(QDropEvent *e) const { - QStringList modelTypes = model->mimeTypes(); - const QMimeData *mime = e->mimeData(); - for (int i = 0; i < modelTypes.count(); ++i) - if (mime->hasFormat(modelTypes.at(i)) - && (e->dropAction() & model->supportedDropActions())) - return true; + inline bool canDrop(QDropEvent *event) { + QModelIndex index; + int col = -1; + int row = -1; + if (dropOn(event, &row, &col, &index)) { + return model->canDropMimeData(event->mimeData(), + dragDropMode == QAbstractItemView::InternalMove ? Qt::MoveAction : event->dropAction(), + row, col, index); + } return false; } diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index a097228846..e7d18092f1 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -1977,7 +1977,7 @@ void QListModeViewBase::dragMoveEvent(QDragMoveEvent *event) ? intersectVector.last() : QModelIndex(); dd->hover = index; if (!dd->droppingOnItself(event, index) - && dd->canDecode(event)) { + && dd->canDrop(event)) { if (index.isValid() && dd->showDropIndicator) { QRect rect = qq->visualRect(index); @@ -2023,7 +2023,7 @@ void QListModeViewBase::dragMoveEvent(QDragMoveEvent *event) } } dd->viewport->update(); - } // can decode + } // can drop if (dd->shouldAutoScroll(event->pos())) qq->startAutoScroll(); @@ -2757,7 +2757,7 @@ bool QIconModeViewBase::filterDragLeaveEvent(QDragLeaveEvent *e) bool QIconModeViewBase::filterDragMoveEvent(QDragMoveEvent *e) { - if (e->source() != qq || !dd->canDecode(e)) + if (e->source() != qq || !dd->canDrop(e)) return false; // ignore by default |