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