From 3e11e30a32fe320156763bbdc78f4861727c8099 Mon Sep 17 00:00:00 2001
From: Aurindam Jana <aurindam.jana@nokia.com>
Date: Mon, 27 Feb 2012 11:25:30 +0100
Subject: [PATCH] ScriptConsole: Scrolling behaviour

Keep scrolling when new items are added only if the
scrollbar is at the bottom.

Change-Id: Id520585fed0ecc63be8bf1850b72af7df8a2d491
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
---
 src/plugins/debugger/qtmessagelogview.cpp   | 8 ++++++++
 src/plugins/debugger/qtmessagelogview.h     | 3 +++
 src/plugins/debugger/qtmessagelogwindow.cpp | 2 +-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/plugins/debugger/qtmessagelogview.cpp b/src/plugins/debugger/qtmessagelogview.cpp
index 0029235ea3d..718fc327cf1 100644
--- a/src/plugins/debugger/qtmessagelogview.cpp
+++ b/src/plugins/debugger/qtmessagelogview.cpp
@@ -47,6 +47,7 @@
 #include <QAbstractProxyModel>
 #include <QFileInfo>
 #include <QUrl>
+#include <QScrollBar>
 
 namespace Debugger {
 namespace Internal {
@@ -115,6 +116,13 @@ QtMessageLogView::QtMessageLogView(QWidget *parent) :
             SLOT(onRowActivated(QModelIndex)));
 }
 
+void QtMessageLogView::onScrollToBottom()
+{
+    //Keep scrolling to bottom if scroll bar is at maximum()
+    if (verticalScrollBar()->value() == verticalScrollBar()->maximum())
+        scrollToBottom();
+}
+
 void QtMessageLogView::mousePressEvent(QMouseEvent *event)
 {
     QPoint pos = event->pos();
diff --git a/src/plugins/debugger/qtmessagelogview.h b/src/plugins/debugger/qtmessagelogview.h
index 103d6ff19df..9b0afc285d8 100644
--- a/src/plugins/debugger/qtmessagelogview.h
+++ b/src/plugins/debugger/qtmessagelogview.h
@@ -44,6 +44,9 @@ class QtMessageLogView : public QTreeView
 public:
     explicit QtMessageLogView(QWidget *parent = 0);
 
+public slots:
+    void onScrollToBottom();
+
 protected:
     void mousePressEvent(QMouseEvent *event);
     void keyPressEvent(QKeyEvent *e);
diff --git a/src/plugins/debugger/qtmessagelogwindow.cpp b/src/plugins/debugger/qtmessagelogwindow.cpp
index e54ccae8ab2..58da0805114 100644
--- a/src/plugins/debugger/qtmessagelogwindow.cpp
+++ b/src/plugins/debugger/qtmessagelogwindow.cpp
@@ -159,7 +159,7 @@ QtMessageLogWindow::QtMessageLogWindow(QWidget *parent)
     connect(m_proxyModel,
             SIGNAL(scrollToBottom()),
             m_treeView,
-            SLOT(scrollToBottom()));
+            SLOT(onScrollToBottom()));
 
     m_itemDelegate = new QtMessageLogItemDelegate(this);
     connect(m_treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
-- 
GitLab