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>
This commit is contained in:
Thorbjørn Lund Martsum 2012-11-06 21:08:10 +01:00 committed by The Qt Project
parent 508bbe9507
commit 80fa4b6c8e
2 changed files with 25 additions and 6 deletions

View File

@ -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];

View File

@ -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()
{