From f812780e30cfc5267a44a2ef8946d87db5cc2ca8 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 25 Mar 2009 13:05:12 +0100 Subject: [PATCH] debugger: keep row selection in watchersview after expand/collapse Task-number: 233285 --- src/plugins/debugger/watchhandler.cpp | 3 ++- src/plugins/debugger/watchwindow.cpp | 16 ++++++++++++---- src/plugins/debugger/watchwindow.h | 1 + 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 0342f22c7e3..e8bb8d5fe5e 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -751,7 +751,8 @@ void WatchHandler::rebuildModel() m_inChange = true; //qDebug() << "WATCHHANDLER: RESET ABOUT TO EMIT"; - emit reset(); + //emit reset(); + emit layoutChanged(); //qDebug() << "WATCHHANDLER: RESET EMITTED"; m_inChange = false; diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp index 55759b1462c..e10d39319b6 100644 --- a/src/plugins/debugger/watchwindow.cpp +++ b/src/plugins/debugger/watchwindow.cpp @@ -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); } } diff --git a/src/plugins/debugger/watchwindow.h b/src/plugins/debugger/watchwindow.h index ff26a693362..715507f8b16 100644 --- a/src/plugins/debugger/watchwindow.h +++ b/src/plugins/debugger/watchwindow.h @@ -60,6 +60,7 @@ public slots: private: Q_SLOT void expandNode(const QModelIndex &index); Q_SLOT void collapseNode(const QModelIndex &index); + Q_SLOT void resetHelper(); void keyPressEvent(QKeyEvent *ev); void contextMenuEvent(QContextMenuEvent *ev); -- GitLab