From 3ea0020d3b74560cd918af88b911781aceeceaef Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 23 Sep 2014 15:44:47 +0200 Subject: [PATCH] Abstract proxy model: Add missing delegation of supportedDragActions Change-Id: I4d2519aaa46d3ca075330c6680dd3672249cbefe Reviewed-by: Olivier Goffart --- .../itemmodels/qabstractproxymodel.cpp | 9 +++++++++ src/corelib/itemmodels/qabstractproxymodel.h | 1 + .../tst_qabstractproxymodel.cpp | 20 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/corelib/itemmodels/qabstractproxymodel.cpp b/src/corelib/itemmodels/qabstractproxymodel.cpp index 5250e2bf15..dcb7cc0d64 100644 --- a/src/corelib/itemmodels/qabstractproxymodel.cpp +++ b/src/corelib/itemmodels/qabstractproxymodel.cpp @@ -425,6 +425,15 @@ QStringList QAbstractProxyModel::mimeTypes() const return d->model->mimeTypes(); } +/*! + \reimp + */ +Qt::DropActions QAbstractProxyModel::supportedDragActions() const +{ + Q_D(const QAbstractProxyModel); + return d->model->supportedDragActions(); +} + /*! \reimp */ diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h index f1d3d0b07c..01b5f09c8e 100644 --- a/src/corelib/itemmodels/qabstractproxymodel.h +++ b/src/corelib/itemmodels/qabstractproxymodel.h @@ -96,6 +96,7 @@ public: bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; QStringList mimeTypes() const; + Qt::DropActions supportedDragActions() const; Qt::DropActions supportedDropActions() const; Q_SIGNALS: diff --git a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp index f36bbbc5b6..18678a35c0 100644 --- a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp +++ b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp @@ -72,6 +72,7 @@ private slots: void submit(); void testRoleNames(); void testSwappingRowsProxy(); + void testDragAndDrop(); }; // Subclass that exposes the protected functions. @@ -495,6 +496,25 @@ void tst_QAbstractProxyModel::testSwappingRowsProxy() } } +class StandardItemModelWithCustomDragAndDrop : public QStandardItemModel +{ +public: + QStringList mimeTypes() const { return QStringList() << QStringLiteral("foo/mimetype"); } + Qt::DropActions supportedDragActions() const { return Qt::CopyAction | Qt::LinkAction; } + Qt::DropActions supportedDropActions() const { return Qt::MoveAction; } +}; + +void tst_QAbstractProxyModel::testDragAndDrop() +{ + StandardItemModelWithCustomDragAndDrop sourceModel; + SubQAbstractProxyModel proxy; + proxy.setSourceModel(&sourceModel); + QCOMPARE(proxy.mimeTypes(), sourceModel.mimeTypes()); + QCOMPARE(proxy.supportedDragActions(), sourceModel.supportedDragActions()); + QCOMPARE(proxy.supportedDropActions(), sourceModel.supportedDropActions()); +} + + QTEST_MAIN(tst_QAbstractProxyModel) #include "tst_qabstractproxymodel.moc"