debugger: keep row selection in watchersview after expand/collapse

Task-number: 233285
This commit is contained in:
hjk
2009-03-25 13:05:12 +01:00
parent 504b81997d
commit f812780e30
3 changed files with 15 additions and 5 deletions

View File

@@ -215,16 +215,13 @@ void WatchWindow::editItem(const QModelIndex &idx)
void WatchWindow::reset()
{
QTreeView::reset();
int row = 0;
if (m_type == TooltipType)
row = 1;
else if (m_type == WatchersType)
row = 2;
//qDebug() << "WATCHWINDOW::RESET" << row;
QTreeView::reset();
setRootIndex(model()->index(row, 0, model()->index(0, 0)));
//setRootIndex(model()->index(0, 0));
resetHelper(model()->index(0, 0));
}
void WatchWindow::setModel(QAbstractItemModel *model)
@@ -236,16 +233,27 @@ void WatchWindow::setModel(QAbstractItemModel *model)
header()->setResizeMode(QHeaderView::ResizeToContents);
if (m_type != LocalsType)
header()->hide();
connect(model, SIGNAL(layoutChanged()), this, SLOT(resetHelper()));
}
void WatchWindow::resetHelper()
{
resetHelper(model()->index(0, 0));
}
void WatchWindow::resetHelper(const QModelIndex &idx)
{
if (model()->data(idx, ExpandedRole).toBool()) {
//qDebug() << "EXPANDING " << model()->data(idx, INameRole);
expand(idx);
for (int i = 0, n = model()->rowCount(idx); i != n; ++i) {
QModelIndex idx1 = model()->index(i, 0, idx);
resetHelper(idx1);
}
} else {
//qDebug() << "COLLAPSING " << model()->data(idx, INameRole);
collapse(idx);
}
}