Fix showoutput taskhandler

* Was broken after recent change to compileoutputwindow.
 * simplify logic a bit while at it.
This commit is contained in:
Tobias Hunger
2010-07-02 15:54:41 +02:00
parent 07c8186e78
commit e07723b4de

View File

@@ -47,6 +47,10 @@
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace ProjectExplorer::Internal; using namespace ProjectExplorer::Internal;
namespace {
const int MAX_LINECOUNT = 10000;
}
CompileOutputWindow::CompileOutputWindow(BuildManager * /*bm*/) CompileOutputWindow::CompileOutputWindow(BuildManager * /*bm*/)
{ {
m_textEdit = new QPlainTextEdit(); m_textEdit = new QPlainTextEdit();
@@ -92,7 +96,7 @@ QWidget *CompileOutputWindow::outputWidget(QWidget *)
void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat &textCharFormat) void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat &textCharFormat)
{ {
if (m_textEdit->document()->blockCount() > 10000) if (m_textEdit->document()->blockCount() > MAX_LINECOUNT)
return; return;
bool shouldScroll = (m_textEdit->verticalScrollBar()->value() == bool shouldScroll = (m_textEdit->verticalScrollBar()->value() ==
m_textEdit->verticalScrollBar()->maximum()); m_textEdit->verticalScrollBar()->maximum());
@@ -104,7 +108,7 @@ void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat
cursor.beginEditBlock(); cursor.beginEditBlock();
cursor.insertText(textWithNewline, textCharFormat); cursor.insertText(textWithNewline, textCharFormat);
if (m_textEdit->document()->blockCount() > 10000) { if (m_textEdit->document()->blockCount() > MAX_LINECOUNT) {
QTextCharFormat tmp; QTextCharFormat tmp;
tmp.setFontWeight(QFont::Bold); tmp.setFontWeight(QFont::Bold);
cursor.insertText(tr("Additional output omitted\n"), tmp); cursor.insertText(tr("Additional output omitted\n"), tmp);
@@ -160,8 +164,10 @@ bool CompileOutputWindow::canNavigate()
void CompileOutputWindow::registerPositionOf(const Task &task) void CompileOutputWindow::registerPositionOf(const Task &task)
{ {
QTextBlock block(m_textEdit->textCursor().block()); int blocknumber = m_textEdit->blockCount();
m_taskPositions.insert(task.taskId, block.position() + block.length() + 1); if (blocknumber > MAX_LINECOUNT)
return;
m_taskPositions.insert(task.taskId, blocknumber - 1);
} }
bool CompileOutputWindow::knowsPositionOf(const Task &task) bool CompileOutputWindow::knowsPositionOf(const Task &task)
@@ -172,7 +178,7 @@ bool CompileOutputWindow::knowsPositionOf(const Task &task)
void CompileOutputWindow::showPositionOf(const Task &task) void CompileOutputWindow::showPositionOf(const Task &task)
{ {
int position = m_taskPositions.value(task.taskId); int position = m_taskPositions.value(task.taskId);
QTextCursor newCursor(m_textEdit->document()->findBlock(position)); QTextCursor newCursor(m_textEdit->document()->findBlockByNumber(position));
newCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); newCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
m_textEdit->setTextCursor(newCursor); m_textEdit->setTextCursor(newCursor);
} }