diff options
author | Thorbjørn Lund Martsum <tmartsum@gmail.com> | 2012-11-06 21:08:10 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-01-31 13:12:32 +0100 |
commit | 80fa4b6c8ef4d4b51c6a8c114aed2f7b1bc4db45 (patch) | |
tree | 0979a6d8870d82519fc17c3e78faf0116b78a90d | |
parent | 508bbe9507a21bdb1ef1216b75e9e75fceb3b179 (diff) |
QTreeView - emit expanded on expandAll
When we call QTreeView::expand expanded is emitted.
For the same reason we should emit expanded on expandAll()
This partly solves:
Task-number: QTBUG-8176
Change-Id: Ie85e724eec50980c68f626ec47dec5c1e08cc085
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r-- | src/widgets/itemviews/qtreeview.cpp | 4 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp | 27 |
2 files changed, 25 insertions, 6 deletions
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index cee47faab4..b21fd0abcf 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -3194,8 +3194,8 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit item->total = 0; item->hasMoreSiblings = false; if ((recursiveExpanding && !(current.flags() & Qt::ItemNeverHasChildren)) || isIndexExpanded(current)) { - if (recursiveExpanding) - expandedIndexes.insert(current); + if (recursiveExpanding && storeExpanded(current)) + emit q->expanded(current); item->expanded = true; layout(last, recursiveExpanding, afterIsUninitialized); item = &viewItems[last]; diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp index a1de5f190c..2256a252f5 100644 --- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp @@ -257,6 +257,7 @@ private slots: void taskQTBUG_13567_removeLastItemRegression(); void taskQTBUG_25333_adjustViewOptionsForIndex(); void taskQTBUG_18539_emitLayoutChanged(); + void taskQTBUG_8176_emitOnExpandAll(); }; class QtTestModel: public QAbstractItemModel @@ -1621,13 +1622,10 @@ void tst_QTreeView::expandAndCollapseAll() for (int r = 0; r < rows; ++r) parents.push(model.index(r, 0, p)); } -// ### why is expanded() signal not emitted? -// QCOMPARE(expandedSpy.count(), count); + QCOMPARE(expandedSpy.count(), 12); // == (3+1)*(2+1) from QtTestModel model(3, 2); view.collapseAll(); - QCOMPARE(expandedSpy.count(), 0); - parents.push(QModelIndex()); count = 0; while (!parents.isEmpty()) { @@ -4198,6 +4196,27 @@ void tst_QTreeView::taskQTBUG_18539_emitLayoutChanged() QCOMPARE(afterRISpy.size(), 0); } +void tst_QTreeView::taskQTBUG_8176_emitOnExpandAll() +{ + QTreeWidget tw; + QTreeWidgetItem *item = new QTreeWidgetItem(&tw, QStringList(QString("item 1"))); + QTreeWidgetItem *item2 = new QTreeWidgetItem(item, QStringList(QString("item 2"))); + new QTreeWidgetItem(item2, QStringList(QString("item 3"))); + new QTreeWidgetItem(item2, QStringList(QString("item 4"))); + QTreeWidgetItem *item5 = new QTreeWidgetItem(&tw, QStringList(QString("item 5"))); + new QTreeWidgetItem(item5, QStringList(QString("item 6"))); + QSignalSpy spy(&tw, SIGNAL(expanded(const QModelIndex&))); + // expand all + tw.expandAll(); + QCOMPARE(spy.size(), 6); + spy.clear(); + tw.collapseAll(); + item2->setExpanded(true); + spy.clear(); + tw.expandAll(); + QCOMPARE(spy.size(), 5); +} + #ifndef QT_NO_ANIMATION void tst_QTreeView::quickExpandCollapse() { |