From f33cf18d882ada727da0f378525e55d9421e3b16 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sun, 28 May 2017 10:49:21 +0200 Subject: QAbstractItemModel::supportedDragActions: fix regression This method now returns -1 by default, due to commit 6255cb893d which mistakenly replaced -1 with Qt::IgnoreAction (0x0). As a result, dropping is forbidden in a number of applications (I detected this in zanshin). Change-Id: I4922451216e08d5d3fe36f8ba87364a361b691bf Reviewed-by: Giuseppe D'Angelo --- .../qabstractitemmodel/tst_qabstractitemmodel.cpp | 22 ++++++++++++++++++++++ .../qstringlistmodel/tst_qstringlistmodel.cpp | 9 +++++++++ .../qstandarditemmodel/tst_qstandarditemmodel.cpp | 8 ++++++++ 3 files changed, 39 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp index dcd9eda4bb..9f67ccd9c9 100644 --- a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp +++ b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp @@ -101,6 +101,7 @@ private slots: void testRoleNames(); void testDragActions(); + void dragActionsFallsBackToDropActions(); void testFunctionPointerSignalConnection(); @@ -2157,6 +2158,27 @@ void tst_QAbstractItemModel::testDragActions() QVERIFY(actions & Qt::MoveAction); } +class OverrideDropActions : public QStringListModel +{ + Q_OBJECT +public: + OverrideDropActions(QObject *parent = 0) + : QStringListModel(parent) + { + } + Qt::DropActions supportedDropActions() const override + { + return Qt::MoveAction; + } +}; + +void tst_QAbstractItemModel::dragActionsFallsBackToDropActions() +{ + QAbstractItemModel *model = new OverrideDropActions(this); + QCOMPARE(model->supportedDragActions(), Qt::MoveAction); + QCOMPARE(model->supportedDropActions(), Qt::MoveAction); +} + class SignalConnectionTester : public QObject { Q_OBJECT diff --git a/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp b/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp index f99241da3b..adc8c59bf7 100644 --- a/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp +++ b/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp @@ -80,6 +80,8 @@ private slots: void setData_emits_both_roles_data(); void setData_emits_both_roles(); + + void supportedDragDropActions(); }; void tst_QStringListModel::rowsAboutToBeRemoved_rowsRemoved_data() @@ -250,5 +252,12 @@ void tst_QStringListModel::setData_emits_both_roles() expected); } +void tst_QStringListModel::supportedDragDropActions() +{ + QStringListModel model; + QCOMPARE(model.supportedDragActions(), Qt::CopyAction | Qt::MoveAction); + QCOMPARE(model.supportedDropActions(), Qt::CopyAction | Qt::MoveAction); +} + QTEST_MAIN(tst_QStringListModel) #include "tst_qstringlistmodel.moc" diff --git a/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp b/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp index dca718a6d8..cff26be7bb 100644 --- a/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp +++ b/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp @@ -125,6 +125,7 @@ private slots: void itemRoleNames(); void getMimeDataWithInvalidModelIndex(); + void supportedDragDropActions(); private: QAbstractItemModel *m_model; @@ -1666,5 +1667,12 @@ void tst_QStandardItemModel::getMimeDataWithInvalidModelIndex() QVERIFY(!data); } +void tst_QStandardItemModel::supportedDragDropActions() +{ + QStandardItemModel model; + QCOMPARE(model.supportedDragActions(), Qt::CopyAction | Qt::MoveAction); + QCOMPARE(model.supportedDropActions(), Qt::CopyAction | Qt::MoveAction); +} + QTEST_MAIN(tst_QStandardItemModel) #include "tst_qstandarditemmodel.moc" -- cgit v1.2.3