diff options
author | Eike Ziller <eike.ziller@digia.com> | 2013-07-16 13:51:44 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2013-07-16 14:51:27 +0200 |
commit | 746e4f41197a37418d03975ee856e28b3c5c13c3 (patch) | |
tree | 098dc74a56b36c465d39d9292431edcf86b31848 /src/plugins/debugger/qml/qmlv8debuggerclient.cpp | |
parent | 00a46667d7d7f52d9eb286384823266df8604351 (diff) | |
download | qt-creator-746e4f41197a37418d03975ee856e28b3c5c13c3.tar.gz |
Fix marking JavaScript lines that threw an exception
Since EditorManager::openedEditors doesn't exactly do what one would
expect, it was only marking a single editor even if there were multiple
editors on the same document.
Change-Id: Iae579c2cfd8455de2783d39fa69944fe92dfc60a
Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
Diffstat (limited to 'src/plugins/debugger/qml/qmlv8debuggerclient.cpp')
-rw-r--r-- | src/plugins/debugger/qml/qmlv8debuggerclient.cpp | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index 02b10ea546..361d83d081 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -1993,50 +1993,52 @@ void QmlV8DebuggerClient::highlightExceptionCode(int lineNumber, const QString &filePath, const QString &errorMessage) { - EditorManager *editorManager = EditorManager::instance(); - QList<IEditor *> openedEditors = editorManager->openedEditors(); + DocumentModel *documentModel = EditorManager::documentModel(); + int index = documentModel->indexOfFilePath(filePath); + if (index < 0 || !documentModel->documents().at(index)->document) + return; + QList<IEditor *> editors = documentModel->editorsForDocument( + documentModel->documents().at(index)->document); // set up the format for the errors QTextCharFormat errorFormat; errorFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline); errorFormat.setUnderlineColor(Qt::red); - foreach (IEditor *editor, openedEditors) { - if (editor->document()->filePath() == filePath) { - TextEditor::BaseTextEditorWidget *ed = qobject_cast<TextEditor::BaseTextEditorWidget *>(editor->widget()); - if (!ed) - continue; + foreach (IEditor *editor, editors) { + TextEditor::BaseTextEditorWidget *ed = qobject_cast<TextEditor::BaseTextEditorWidget *>(editor->widget()); + if (!ed) + continue; - QList<QTextEdit::ExtraSelection> selections; - QTextEdit::ExtraSelection sel; - sel.format = errorFormat; - QTextCursor c(ed->document()->findBlockByNumber(lineNumber - 1)); - const QString text = c.block().text(); - for (int i = 0; i < text.size(); ++i) { - if (! text.at(i).isSpace()) { - c.setPosition(c.position() + i); - break; - } + QList<QTextEdit::ExtraSelection> selections; + QTextEdit::ExtraSelection sel; + sel.format = errorFormat; + QTextCursor c(ed->document()->findBlockByNumber(lineNumber - 1)); + const QString text = c.block().text(); + for (int i = 0; i < text.size(); ++i) { + if (! text.at(i).isSpace()) { + c.setPosition(c.position() + i); + break; } - c.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); - sel.cursor = c; + } + c.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); + sel.cursor = c; - sel.format.setToolTip(errorMessage); + sel.format.setToolTip(errorMessage); - selections.append(sel); - ed->setExtraSelections(TextEditor::BaseTextEditorWidget::DebuggerExceptionSelection, selections); + selections.append(sel); + ed->setExtraSelections(TextEditor::BaseTextEditorWidget::DebuggerExceptionSelection, selections); - QString message = QString(_("%1: %2: %3")).arg(filePath).arg(lineNumber) - .arg(errorMessage); - d->engine->showMessage(message, ConsoleOutput); - } + QString message = QString(_("%1: %2: %3")).arg(filePath).arg(lineNumber) + .arg(errorMessage); + d->engine->showMessage(message, ConsoleOutput); } } void QmlV8DebuggerClient::clearExceptionSelection() { - EditorManager *editorManager = EditorManager::instance(); - QList<IEditor *> openedEditors = editorManager->openedEditors(); + DocumentModel *documentModel = EditorManager::documentModel(); + QList<IEditor *> openedEditors = documentModel->editorsForDocuments(documentModel->openedDocuments()); QList<QTextEdit::ExtraSelection> selections; foreach (IEditor *editor, openedEditors) { |