Be more agressive in scrolling to the bottom in output

panes when output was appended while the window was
not visible.
This commit is contained in:
mae
2009-09-21 16:41:01 +02:00
parent 7483880bcc
commit 2a276da5e7
2 changed files with 16 additions and 0 deletions

View File

@@ -341,6 +341,7 @@ OutputWindow::OutputWindow(QWidget *parent)
: QPlainTextEdit(parent)
{
m_enforceNewline = false;
m_scrollToBottom = false;
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
//setCenterOnScroll(false);
@@ -392,8 +393,18 @@ OutputWindow::~OutputWindow()
Core::ICore::instance()->removeContextObject(m_outputWindowContext);
}
void OutputWindow::showEvent(QShowEvent *e)
{
QPlainTextEdit::showEvent(e);
if (m_scrollToBottom) {
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
}
m_scrollToBottom = false;
}
void OutputWindow::appendOutput(const QString &out)
{
m_scrollToBottom = true;
QString s = out;
m_enforceNewline = true; // make appendOutputInline put in a newline next time
if (s.endsWith(QLatin1Char('\n'))) {
@@ -407,6 +418,7 @@ void OutputWindow::appendOutput(const QString &out)
void OutputWindow::appendOutputInline(const QString &out)
{
m_scrollToBottom = true;
setMaximumBlockCount(MaxBlockCount);
int newline = -1;
@@ -439,6 +451,7 @@ void OutputWindow::appendOutputInline(const QString &out)
void OutputWindow::insertLine()
{
m_scrollToBottom = true;
setMaximumBlockCount(MaxBlockCount);
appendPlainText(QString());
enableUndoRedo();

View File

@@ -126,10 +126,13 @@ public:
void appendOutputInline(const QString &out);
void insertLine();
void showEvent(QShowEvent *);
private:
Core::BaseContext *m_outputWindowContext;
void enableUndoRedo();
bool m_enforceNewline;
bool m_scrollToBottom;
};
#if 0