summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
index f15a32eee3..4d4f4a4fe2 100644
--- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
@@ -70,8 +70,10 @@ static void initStandardTreeModel(QStandardItemModel *model)
model->insertRow(2, item);
}
+class tst_QTreeView;
struct PublicView : public QTreeView
{
+ friend class tst_QTreeView;
inline void executeDelayedItemsLayout()
{ QTreeView::executeDelayedItemsLayout(); }
@@ -170,6 +172,9 @@ private slots:
void expandAndCollapse();
void expandAndCollapseAll();
void expandWithNoChildren();
+#ifndef QT_NO_ANIMATION
+ void quickExpandCollapse();
+#endif
void keyboardNavigation();
void headerSections();
void moveCursor_data();
@@ -3546,8 +3551,6 @@ void tst_QTreeView::task230123_setItemsExpandable()
QTest::keyClick(&tree, Qt::Key_Left);
QVERIFY(!root.isExpanded());
-
-
}
void tst_QTreeView::task202039_closePersistentEditor()
@@ -4146,5 +4149,39 @@ void tst_QTreeView::taskQTBUG_18539_emitLayoutChanged()
QCOMPARE(afterRISpy.size(), 0);
}
+#ifndef QT_NO_ANIMATION
+void tst_QTreeView::quickExpandCollapse()
+{
+ //this unit tests makes sure the state after the animation is restored correctly
+ //after starting a 2nd animation while the first one was still on-going
+ //this tests that the stateBeforeAnimation is not set to AnimatingState
+ PublicView tree;
+ tree.setAnimated(true);
+ QStandardItemModel model;
+ QStandardItem *root = new QStandardItem("root");
+ root->appendRow(new QStandardItem("subnode"));
+ model.appendRow(root);
+ tree.setModel(&model);
+
+ QModelIndex rootIndex = root->index();
+ QVERIFY(rootIndex.isValid());
+
+ tree.show();
+ QTest::qWaitForWindowShown(&tree);
+
+ int initialState = tree.state();
+
+ tree.expand(rootIndex);
+ QCOMPARE(tree.state(), (int)PublicView::AnimatingState);
+
+ tree.collapse(rootIndex);
+ QCOMPARE(tree.state(), (int)PublicView::AnimatingState);
+
+ QTest::qWait(500); //the animation lasts for 250ms max so 500 should be enough
+
+ QCOMPARE(tree.state(), initialState);
+}
+#endif
+
QTEST_MAIN(tst_QTreeView)
#include "tst_qtreeview.moc"