From 1fd24aa8b7f446a94b3d47b9a36b5ef296833042 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 1 Jul 2014 10:55:24 +0200 Subject: [PATCH] Debugger: Maintain slider position in watch view Setting column width seems to reset slider positions, needlessly. Work around. Change-Id: Ifa6c6a204dd2fbd7ad3dada0c386b697ae7a4100 Reviewed-by: Christian Stenger --- src/plugins/debugger/watchwindow.cpp | 28 +++++++++++++++++++++++----- src/plugins/debugger/watchwindow.h | 3 +++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp index 2f887680f87..d89513b5288 100644 --- a/src/plugins/debugger/watchwindow.cpp +++ b/src/plugins/debugger/watchwindow.cpp @@ -47,17 +47,18 @@ #include #include -#include -#include -#include - #include #include +#include #include +#include #include #include -#include #include +#include +#include +#include +#include //#define USE_WATCH_MODEL_TEST 1 @@ -1055,6 +1056,23 @@ void WatchTreeView::reset() resetHelper(); } +void WatchTreeView::doItemsLayout() +{ + if (m_sliderPosition == 0) + m_sliderPosition = verticalScrollBar()->sliderPosition(); + Utils::BaseTreeView::doItemsLayout(); + if (m_sliderPosition) + QTimer::singleShot(0, this, SLOT(adjustSlider())); +} + +void WatchTreeView::adjustSlider() +{ + if (m_sliderPosition) { + verticalScrollBar()->setSliderPosition(m_sliderPosition); + m_sliderPosition = 0; + } +} + void WatchTreeView::watchExpression(const QString &exp) { watchExpression(exp, QString()); diff --git a/src/plugins/debugger/watchwindow.h b/src/plugins/debugger/watchwindow.h index 3651e831a36..2e322dcb090 100644 --- a/src/plugins/debugger/watchwindow.h +++ b/src/plugins/debugger/watchwindow.h @@ -69,6 +69,7 @@ private slots: void resetHelper(); void expandNode(const QModelIndex &idx); void collapseNode(const QModelIndex &idx); + void adjustSlider(); void onClearIndividualFormat(); void onClearTypeFormat(); @@ -78,6 +79,7 @@ private slots: void onIndividualFormatChange(); private: + void doItemsLayout(); void keyPressEvent(QKeyEvent *ev); void contextMenuEvent(QContextMenuEvent *ev); void dragEnterEvent(QDragEnterEvent *ev); @@ -95,6 +97,7 @@ private: WatchType m_type; bool m_grabbing; + int m_sliderPosition; }; } // namespace Internal