From ddb424a1c3935a31f3343d45e1f3dbb15d1d8250 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Fri, 2 Jul 2010 12:15:20 +0200
Subject: [PATCH] Fixes scrolling to the bottom of compile output

Patch mostly by mae.

Task-Nr:  QTCREATORBUG-1405
---
 .../projectexplorer/compileoutputwindow.cpp        | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp
index 78a56462237..1238fa33f51 100644
--- a/src/plugins/projectexplorer/compileoutputwindow.cpp
+++ b/src/plugins/projectexplorer/compileoutputwindow.cpp
@@ -92,6 +92,10 @@ QWidget *CompileOutputWindow::outputWidget(QWidget *)
 
 void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat &textCharFormat)
 {
+    if (m_textEdit->document()->blockCount() > 10000)
+        return;
+    bool shouldScroll = (m_textEdit->verticalScrollBar()->value() ==
+                         m_textEdit->verticalScrollBar()->maximum());
     QString textWithNewline = text;
     if (!textWithNewline.endsWith("\n"))
         textWithNewline.append("\n");
@@ -99,7 +103,17 @@ void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat
     cursor.movePosition(QTextCursor::End);
     cursor.beginEditBlock();
     cursor.insertText(textWithNewline, textCharFormat);
+
+    if (m_textEdit->document()->blockCount() > 10000) {
+        QTextCharFormat tmp;
+        tmp.setFontWeight(QFont::Bold);
+        cursor.insertText(tr("Additional output omitted\n"), tmp);
+    }
+
     cursor.endEditBlock();
+
+    if (shouldScroll)
+        m_textEdit->setTextCursor(cursor);
 }
 
 void CompileOutputWindow::clearContents()
-- 
GitLab