summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.cpp16
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.h10
-rw-r--r--tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp20
3 files changed, 35 insertions, 11 deletions
diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
index 7e6c8baa1d..dec1fe4cef 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
+++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
@@ -1831,7 +1831,6 @@ Qt::DropActions QAbstractItemModel::supportedDropActions() const
*/
Qt::DropActions QAbstractItemModel::supportedDragActions() const
{
- // ### Qt 5: make this virtual or these properties
Q_D(const QAbstractItemModel);
if (d->supportedDragActions != -1)
return d->supportedDragActions;
@@ -1839,17 +1838,22 @@ Qt::DropActions QAbstractItemModel::supportedDragActions() const
}
/*!
+ \internal
+ */
+void QAbstractItemModel::doSetSupportedDragActions(Qt::DropActions actions)
+{
+ Q_D(QAbstractItemModel);
+ d->supportedDragActions = actions;
+}
+
+/*!
\since 4.2
+ \obsolete
Sets the supported drag \a actions for the items in the model.
\sa supportedDragActions(), {Using drag and drop with item views}
*/
-void QAbstractItemModel::setSupportedDragActions(Qt::DropActions actions)
-{
- Q_D(QAbstractItemModel);
- d->supportedDragActions = actions;
-}
/*!
\note The base class implementation of this function does nothing and
diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h
index 8c9615f7cb..dce85850a1 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.h
+++ b/src/corelib/itemmodels/qabstractitemmodel.h
@@ -198,8 +198,13 @@ public:
int row, int column, const QModelIndex &parent);
virtual Qt::DropActions supportedDropActions() const;
- Qt::DropActions supportedDragActions() const;
- void setSupportedDragActions(Qt::DropActions);
+ virtual Qt::DropActions supportedDragActions() const;
+#if QT_DEPRECATED_SINCE(5, 0)
+ void setSupportedDragActions(Qt::DropActions actions)
+ {
+ doSetSupportedDragActions(actions);
+ }
+#endif
virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex());
@@ -311,6 +316,7 @@ protected:
private:
void doSetRoleNames(const QHash<int,QByteArray> &roleNames);
+ void doSetSupportedDragActions(Qt::DropActions actions);
Q_DECLARE_PRIVATE(QAbstractItemModel)
Q_DISABLE_COPY(QAbstractItemModel)
diff --git a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
index fd7b0d76ba..5d7eb1d759 100644
--- a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -113,6 +113,7 @@ private slots:
void testChildrenLayoutsChanged();
void testRoleNames();
+ void testDragActions();
private:
DynamicTreeModel *m_model;
@@ -1978,11 +1979,11 @@ void tst_QAbstractItemModel::testChildrenLayoutsChanged()
}
}
-class OverrideRoleNames : public QStringListModel
+class OverrideRoleNamesAndDragActions : public QStringListModel
{
Q_OBJECT
public:
- OverrideRoleNames(QObject *parent = 0)
+ OverrideRoleNamesAndDragActions(QObject *parent = 0)
: QStringListModel(parent)
{
@@ -1994,15 +1995,28 @@ public:
roles.insert(Qt::UserRole + 2, "custom");
return roles;
}
+
+ Qt::DropActions supportedDragActions() const
+ {
+ return QStringListModel::supportedDragActions() | Qt::MoveAction;
+ }
};
void tst_QAbstractItemModel::testRoleNames()
{
- QAbstractItemModel *model = new OverrideRoleNames(this);
+ QAbstractItemModel *model = new OverrideRoleNamesAndDragActions(this);
QHash<int, QByteArray> roles = model->roleNames();
QVERIFY(roles.contains(Qt::UserRole + 2));
QVERIFY(roles.value(Qt::UserRole + 2) == "custom");
}
+void tst_QAbstractItemModel::testDragActions()
+{
+ QAbstractItemModel *model = new OverrideRoleNamesAndDragActions(this);
+ const Qt::DropActions actions = model->supportedDragActions();
+ QVERIFY(actions & Qt::CopyAction); // Present by default
+ QVERIFY(actions & Qt::MoveAction);
+}
+
QTEST_MAIN(tst_QAbstractItemModel)
#include "tst_qabstractitemmodel.moc"