diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp index 5384ee5ccb78f39faf3f81d06f52051564486ed1..98c3c13beee4f0b7e0fb74d331928203d4a92505 100644 --- a/src/plugins/projectexplorer/outputwindow.cpp +++ b/src/plugins/projectexplorer/outputwindow.cpp @@ -568,6 +568,27 @@ void OutputWindow::mouseMoveEvent(QMouseEvent *e) QPlainTextEdit::mouseMoveEvent(e); } +void OutputWindow::resizeEvent(QResizeEvent *e) +{ + //Keep scrollbar at bottom of window while resizing, to ensure we keep scrolling + //This can happen if window is resized while building, or if the horizontal scrollbar appears + bool atBottom = isScrollbarAtBottom(); + QPlainTextEdit::resizeEvent(e); + if (atBottom) + scrollToBottom(); +} + +void OutputWindow::keyPressEvent(QKeyEvent *ev) +{ + QPlainTextEdit::keyPressEvent(ev); + + //Ensure we scroll also on Ctrl+Home or Ctrl+End + if (ev->matches(QKeySequence::MoveToStartOfDocument)) + verticalScrollBar()->triggerAction(QAbstractSlider::SliderToMinimum); + else if (ev->matches(QKeySequence::MoveToEndOfDocument)) + verticalScrollBar()->triggerAction(QAbstractSlider::SliderToMaximum); +} + OutputFormatter *OutputWindow::formatter() const { return m_formatter; diff --git a/src/plugins/projectexplorer/outputwindow.h b/src/plugins/projectexplorer/outputwindow.h index ad6999ea1dd739999c11c22ede94afcff46f2f68..6e7dfd41327fb9c53dce06ab7e2764052fe16419 100644 --- a/src/plugins/projectexplorer/outputwindow.h +++ b/src/plugins/projectexplorer/outputwindow.h @@ -175,6 +175,8 @@ protected: virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); + virtual void resizeEvent(QResizeEvent *e); + virtual void keyPressEvent(QKeyEvent *ev); private slots: void updateWordWrapMode();