Revert "QTreeView: Make sure QHeaderView is notified on layoutChanged()"

It caused some sorting issues.
This reverts commit 93dabeba9dc5f6cbab60e65b3cc8df5fe48745a9.

Change-Id: Ie8c7f2d47885be6626ddb6284474a78dcf09cf33
Task-number: QTBUG-65478
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
This commit is contained in:
Thorbjørn Lund Martsum 2017-12-28 13:10:19 +00:00 committed by Jani Heikkinen
parent 7e9460306b
commit d5a11a0ec2
2 changed files with 3 additions and 24 deletions

View File

@ -237,6 +237,9 @@ void QTreeView::setModel(QAbstractItemModel *model)
// QAbstractItemView connects to a private slot // QAbstractItemView connects to a private slot
disconnect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)), disconnect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)),
this, SLOT(_q_rowsRemoved(QModelIndex,int,int))); this, SLOT(_q_rowsRemoved(QModelIndex,int,int)));
// do header layout after the tree
disconnect(d->model, SIGNAL(layoutChanged()),
d->header, SLOT(_q_layoutChanged()));
// QTreeView has a public slot for this // QTreeView has a public slot for this
connect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)), connect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)),
this, SLOT(rowsRemoved(QModelIndex,int,int))); this, SLOT(rowsRemoved(QModelIndex,int,int)));

View File

@ -313,17 +313,6 @@ public:
endRemoveColumns(); endRemoveColumns();
} }
void removeAddLastColumnLayoutChanged() // for taskQTBUG_41124
{
// make sure QHeaderView::_q_layoutChanged() is called
emit layoutAboutToBeChanged();
--cols;
emit layoutChanged();
emit layoutAboutToBeChanged();
++cols;
emit layoutChanged();
}
void removeAllColumns() void removeAllColumns()
{ {
beginRemoveColumns(QModelIndex(), 0, cols - 1); beginRemoveColumns(QModelIndex(), 0, cols - 1);
@ -1317,19 +1306,6 @@ void tst_QTreeView::columnHidden()
for (int c = 0; c < model.columnCount(); ++c) for (int c = 0; c < model.columnCount(); ++c)
QCOMPARE(view.isColumnHidden(c), true); QCOMPARE(view.isColumnHidden(c), true);
view.update(); view.update();
// QTBUG_41124:
// QHeaderViewPrivate::_q_layoutChanged was not called because it was
// disconnected in QTreeView::setModel(). _q_layoutChanged restores
// the hidden sections which is tested here
view.setColumnHidden(model.cols - 1, true);
model.removeAddLastColumnLayoutChanged();
// we removed the last column and added a new one
// (with layoutToBeChanged/layoutChanged() for both) so column
// 1 is a new column and therefore must not be hidden when
// _q_layoutChanged() is called and is doing the right stuff
QCOMPARE(view.isColumnHidden(model.cols - 1), false);
} }
void tst_QTreeView::rowHidden() void tst_QTreeView::rowHidden()