forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -163,7 +163,7 @@ void DocumentModel::addEntry(Entry *entry)
|
||||
QString fileName = entry->fileName();
|
||||
|
||||
// replace a non-loaded entry (aka 'restored') if possible
|
||||
int previousIndex = indexofFileName(fileName);
|
||||
int previousIndex = indexOfFilePath(fileName);
|
||||
if (previousIndex >= 0) {
|
||||
if (entry->document && d->m_documents.at(previousIndex)->document == 0) {
|
||||
Entry *previousEntry = d->m_documents.at(previousIndex);
|
||||
@@ -190,12 +190,12 @@ void DocumentModel::addEntry(Entry *entry)
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
int DocumentModel::indexofFileName(const QString &filename) const
|
||||
int DocumentModel::indexOfFilePath(const QString &filePath) const
|
||||
{
|
||||
if (filename.isEmpty())
|
||||
if (filePath.isEmpty())
|
||||
return -1;
|
||||
for (int i = 0; i < d->m_documents.count(); ++i) {
|
||||
if (d->m_documents.at(i)->fileName() == filename)
|
||||
if (d->m_documents.at(i)->fileName() == filePath)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
@@ -226,7 +226,7 @@ void DocumentModel::removeEditor(IEditor *editor, bool *lastOneForDocument)
|
||||
|
||||
void DocumentModel::removeDocument(const QString &fileName)
|
||||
{
|
||||
int index = indexofFileName(fileName);
|
||||
int index = indexOfFilePath(fileName);
|
||||
QTC_ASSERT(!d->m_documents.at(index)->document, return); // we wouldn't know what to do with the associated editors
|
||||
removeDocument(index);
|
||||
}
|
||||
|
@@ -77,6 +77,7 @@ public:
|
||||
int documentCount() const;
|
||||
QList<Entry *> documents() const;
|
||||
int indexOfDocument(IDocument *document) const;
|
||||
int indexOfFilePath(const QString &filePath) const;
|
||||
Entry *entryForDocument(IDocument *document) const;
|
||||
QList<IDocument *> openedDocuments() const;
|
||||
|
||||
@@ -98,7 +99,6 @@ private slots:
|
||||
|
||||
private:
|
||||
void addEntry(Entry *entry);
|
||||
int indexofFileName(const QString &filename) const;
|
||||
void removeDocument(int idx);
|
||||
|
||||
DocumentModelPrivate *d;
|
||||
|
@@ -1993,16 +1993,19 @@ 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) {
|
||||
foreach (IEditor *editor, editors) {
|
||||
TextEditor::BaseTextEditorWidget *ed = qobject_cast<TextEditor::BaseTextEditorWidget *>(editor->widget());
|
||||
if (!ed)
|
||||
continue;
|
||||
@@ -2031,12 +2034,11 @@ void QmlV8DebuggerClient::highlightExceptionCode(int lineNumber,
|
||||
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) {
|
||||
|
Reference in New Issue
Block a user