diff options
author | Thorbjørn Lund Martsum <tmartsum@gmail.com> | 2012-11-07 15:04:31 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-02 08:10:55 +0100 |
commit | 08a632ac1ac48eebdb60d9b87b221e7dbd3c22c4 (patch) | |
tree | d4d9eb52c8820a5d467245acdcd8c4ce27b9292c | |
parent | ebca7d2ea71440b0a5e465774e3abd98ff6298a8 (diff) |
QTreeView::expandToDepth - add missing emit of expanded and collapsed
Just like other functions this function should emit expanded and
collapsed.
A part of fixing
Task-number: QTBUG-8176
Change-Id: I6d801f61e6f0cb8836634cc52f0be2b610f6c728
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
-rw-r--r-- | src/widgets/itemviews/qtreeview.cpp | 20 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp | 9 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index df6ba708a9..fb26343af2 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -2668,6 +2668,8 @@ void QTreeView::expandToDepth(int depth) { Q_D(QTreeView); d->viewItems.clear(); + QSet<QPersistentModelIndex> old_expandedIndexes; + old_expandedIndexes = d->expandedIndexes; d->expandedIndexes.clear(); d->interruptDelayedItemsLayout(); d->layout(-1); @@ -2678,6 +2680,24 @@ void QTreeView::expandToDepth(int depth) d->storeExpanded(d->viewItems.at(i).index); } } + + // emit signals + QSet<QPersistentModelIndex> collapsedIndexes = old_expandedIndexes - d->expandedIndexes; + QSet<QPersistentModelIndex>::const_iterator i = collapsedIndexes.constBegin(); + for (; i != collapsedIndexes.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit collapsed(mi); + } + + QSet<QPersistentModelIndex> expandedIndexs = d->expandedIndexes - old_expandedIndexes; + i = expandedIndexs.constBegin(); + for (; i != expandedIndexs.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit expanded(mi); + } + updateGeometries(); d->viewport->update(); } diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp index 402cf27dd4..d914142e13 100644 --- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp @@ -4225,6 +4225,15 @@ void tst_QTreeView::taskQTBUG_8176_emitOnExpandAll() spy2.clear(); tw.collapseAll(); QCOMPARE(spy2.size(), 5); + + // expand to depth + item2->setExpanded(true); + spy.clear(); + spy2.clear(); + tw.expandToDepth(0); + + QCOMPARE(spy.size(), 2); // item and item5 are expanded + QCOMPARE(spy2.size(), 1); // item2 is collapsed } #ifndef QT_NO_ANIMATION |