summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2014-11-24 13:37:06 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2014-11-24 13:39:13 +0100
commit34aba4724f196e34ed02cf50073f41968f119bb6 (patch)
tree0ebdfcabda989ab76ee6de53c6461553c7a767a5 /src/widgets/itemviews
parentb86b2a742afae118bf974c82ba966ddb0cae4afb (diff)
parentb1cf07f495e10c93e53651ac03e46ebdaea0a97e (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.cpp6
-rw-r--r--src/widgets/itemviews/qabstractitemview_p.h16
-rw-r--r--src/widgets/itemviews/qlistview.cpp6
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