diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp | 41 |
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" |