diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 0daecf7c90a468373f6662925ad7dccba7f963a8..e9a3c480ab48a66c76688c4e07623933440b1637 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -582,20 +582,13 @@ void DebuggerEngine::gotoLocation(const Location &loc) const QString file = loc.fileName(); const int line = loc.lineNumber(); - QList<IEditor *> editors = EditorManager::instance()->editorsForFileName(file); - IEditor *editor = 0; - if (editors.isEmpty()) { - editor = EditorManager::openEditor(file, Core::Id(), - EditorManager::IgnoreNavigationHistory); - QTC_ASSERT(editor, return); // Unreadable file? - editor->setProperty(Constants::OPENED_BY_DEBUGGER, true); - } else { - editor = editors.back(); - } - - ITextEditor *texteditor = qobject_cast<ITextEditor *>(editor); - if (texteditor) - texteditor->gotoLine(line, 0); + bool newEditor = false; + IEditor *editor = EditorManager::openEditor(file, Core::Id(), + EditorManager::IgnoreNavigationHistory, &newEditor); + QTC_ASSERT(editor, return); // Unreadable file? + editor->gotoLine(line, 0); + if (newEditor) + editor->document()->setProperty(Constants::OPENED_BY_DEBUGGER, true); if (loc.needsMarker()) { d->m_locationMark.reset(new TextEditor::BaseTextMark(file, line)); @@ -604,9 +597,6 @@ void DebuggerEngine::gotoLocation(const Location &loc) d->m_locationMark->init(); } - // FIXME: Breaks with split views. - if (!d->m_memoryAgent.hasVisibleEditor() || loc.needsRaise()) - EditorManager::activateEditor(editor); //qDebug() << "MEMORY: " << d->m_memoryAgent.hasVisibleEditor(); } diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 92a9b02d21c604b52bdb6fa9bb845edcc4e0642c..f501757be9c84315969c96f8496e66ba6a35ea72 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -2119,29 +2119,26 @@ void DebuggerPluginPrivate::cleanupViews() if (!boolSetting(CloseBuffersOnExit)) return; - EditorManager *editorManager = EditorManager::instance(); - QTC_ASSERT(editorManager, return); - QList<IEditor *> toClose; - foreach (IEditor *editor, editorManager->openedEditors()) { - if (editor->property(Constants::OPENED_BY_DEBUGGER).toBool()) { - IDocument *doc = editor->document(); + QList<IDocument *> toClose; + foreach (IDocument *document, EditorManager::documentModel()->openedDocuments()) { + if (document->property(Constants::OPENED_BY_DEBUGGER).toBool()) { bool keepIt = true; - if (editor->property(Constants::OPENED_WITH_DISASSEMBLY).toBool()) + if (document->property(Constants::OPENED_WITH_DISASSEMBLY).toBool()) keepIt = false; - else if (doc->isModified()) + else if (document->isModified()) keepIt = true; - else if (doc->filePath().contains(_("qeventdispatcher"))) + else if (document->filePath().contains(_("qeventdispatcher"))) keepIt = false; else - keepIt = (editor == EditorManager::currentEditor()); + keepIt = (document == EditorManager::currentDocument()); if (keepIt) - editor->setProperty(Constants::OPENED_BY_DEBUGGER, false); + document->setProperty(Constants::OPENED_BY_DEBUGGER, false); else - toClose.append(editor); + toClose.append(document); } } - editorManager->closeEditors(toClose); + EditorManager::closeDocuments(toClose); } void DebuggerPluginPrivate::setBusyCursor(bool busy) diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index d56cb663088ac12cb4e3e0db3841421bd9d98572..8271ff7d6cd1af2e6cc6ae81df8e8caf0da81363 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -36,6 +36,7 @@ #include <coreplugin/icore.h> #include <coreplugin/coreconstants.h> +#include <coreplugin/editormanager/documentmodel.h> #include <texteditor/basetexteditor.h> #include <utils/tooltip/tooltip.h> @@ -1372,7 +1373,8 @@ void DebuggerToolTipManager::debugModeEntered() this, SLOT(slotUpdateVisibleToolTips())); connect(em, SIGNAL(editorOpened(Core::IEditor*)), this, SLOT(slotEditorOpened(Core::IEditor*))); - foreach (IEditor *e, em->openedEditors()) + DocumentModel *documentModel = EditorManager::documentModel(); + foreach (IEditor *e, documentModel->editorsForDocuments(documentModel->openedDocuments())) slotEditorOpened(e); // Position tooltips delayed once all the editor placeholder layouting is done. if (!m_tooltips.isEmpty()) @@ -1391,15 +1393,14 @@ void DebuggerToolTipManager::leavingDebugMode() hide(); if (QWidget *topLevel = ICore::mainWindow()->topLevelWidget()) topLevel->removeEventFilter(this); - if (EditorManager *em = EditorManager::instance()) { - foreach (IEditor *e, em->openedEditors()) { - if (DebuggerToolTipEditor toolTipEditor = DebuggerToolTipEditor(e)) { - toolTipEditor.baseTextEditor->verticalScrollBar()->disconnect(this); - toolTipEditor.textEditor->disconnect(this); - } + DocumentModel *documentModel = EditorManager::documentModel(); + foreach (IEditor *e, documentModel->editorsForDocuments(documentModel->openedDocuments())) { + if (DebuggerToolTipEditor toolTipEditor = DebuggerToolTipEditor(e)) { + toolTipEditor.baseTextEditor->verticalScrollBar()->disconnect(this); + toolTipEditor.textEditor->disconnect(this); } - em->disconnect(this); } + EditorManager::instance()->disconnect(this); m_lastToolTipEditor = 0; m_lastToolTipPoint = QPoint(-1, -1); } diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp index 16cc7967033649f5c802b6710328f86c9943e865..06f57e9de9aca4f4c5db86e349bf9ecd54754cb8 100644 --- a/src/plugins/debugger/disassembleragent.cpp +++ b/src/plugins/debugger/disassembleragent.cpp @@ -310,8 +310,9 @@ void DisassemblerAgent::setContentsToEditor(const DisassemblerLines &contents) Core::Constants::K_DEFAULT_TEXT_EDITOR_ID, &titlePattern)); QTC_ASSERT(d->editor, return); - d->editor->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true); - d->editor->setProperty(Debugger::Constants::OPENED_WITH_DISASSEMBLY, true); + IDocument *document = d->editor->document(); + document->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true); + document->setProperty(Debugger::Constants::OPENED_WITH_DISASSEMBLY, true); d->configureMimeType(); BaseTextEditorWidget *baseTextEdit = diff --git a/src/plugins/debugger/imageviewer.cpp b/src/plugins/debugger/imageviewer.cpp index 26d96ad406bbe3e8f0dbcef5f1549fe6336e9243..e7cfd169f75c2ca356baf6c1ff1e087be91e7322 100644 --- a/src/plugins/debugger/imageviewer.cpp +++ b/src/plugins/debugger/imageviewer.cpp @@ -140,7 +140,7 @@ static void openImageViewer(const QImage &image) temporaryFile.close(); } if (Core::IEditor *e = Core::EditorManager::instance()->openEditor(fileName)) - e->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, QVariant(true)); + e->document()->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, QVariant(true)); } void ImageViewer::contextMenuEvent(QContextMenuEvent *ev) diff --git a/src/plugins/debugger/memoryagent.cpp b/src/plugins/debugger/memoryagent.cpp index 5289b502728a7f5497208f63a7c5426ff43d8e26..735e9bc29f9372125a388e33271cba8f3535e26b 100644 --- a/src/plugins/debugger/memoryagent.cpp +++ b/src/plugins/debugger/memoryagent.cpp @@ -181,8 +181,8 @@ bool MemoryAgent::doCreateBinEditor(quint64 addr, unsigned flags, Core::Constants::K_DEFAULT_BINARY_EDITOR_ID, &title); if (!editor) return false; - editor->setProperty(Constants::OPENED_BY_DEBUGGER, QVariant(true)); - editor->setProperty(Constants::OPENED_WITH_MEMORY, QVariant(true)); + editor->document()->setProperty(Constants::OPENED_BY_DEBUGGER, QVariant(true)); + editor->document()->setProperty(Constants::OPENED_WITH_MEMORY, QVariant(true)); QWidget *editorBinEditor = editor->widget(); connectBinEditorWidget(editorBinEditor); MemoryView::setBinEditorReadOnly(editorBinEditor, readOnly); diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 54d2342ee848d337ae2109432a8fce98e746772c..01d8a237c7da7485ccf5c0b99f29d7aaf50054e1 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -53,7 +53,7 @@ #include <utils/qtcassert.h> -#include <texteditor/itexteditor.h> +#include <texteditor/basetextdocument.h> #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/helpmanager.h> #include <coreplugin/icore.h> @@ -528,28 +528,25 @@ void QmlEngine::gotoLocation(const Location &location) if (QUrl(fileName).isLocalFile()) { // internal file from source files -> show generated .js QTC_ASSERT(m_sourceDocuments.contains(fileName), return); - Core::IEditor *editor = 0; - Core::EditorManager *editorManager = Core::EditorManager::instance(); QString titlePattern = tr("JS Source for %1").arg(fileName); - //Check if there are open editors with the same title - QList<Core::IEditor *> editors = editorManager->openedEditors(); - foreach (Core::IEditor *ed, editors) { - if (ed->document()->displayName() == titlePattern) { - editor = ed; - break; + //Check if there are open documents with the same title + foreach (Core::IDocument *document, Core::EditorManager::documentModel()->openedDocuments()) { + if (document->displayName() == titlePattern) { + Core::EditorManager::instance()->activateEditorForDocument(document); + return; } } - if (!editor) { - editor = Core::EditorManager::openEditorWithContents(QmlJSEditor::Constants::C_QMLJSEDITOR_ID, - &titlePattern); - if (editor) - editor->setProperty(Constants::OPENED_BY_DEBUGGER, true); - - updateEditor(editor, m_sourceDocuments.value(fileName)); + Core::IEditor *editor = Core::EditorManager::openEditorWithContents( + QmlJSEditor::Constants::C_QMLJSEDITOR_ID, &titlePattern); + if (editor) { + editor->document()->setProperty(Constants::OPENED_BY_DEBUGGER, true); + QPlainTextEdit *plainTextEdit = + qobject_cast<QPlainTextEdit *>(editor->widget()); + if (plainTextEdit) + plainTextEdit->setReadOnly(true); + updateDocument(editor->document(), m_sourceDocuments.value(fileName)); } - Core::EditorManager::activateEditor(editor); - } else { DebuggerEngine::gotoLocation(location); } @@ -1299,27 +1296,22 @@ void QmlEngine::updateScriptSource(const QString &fileName, int lineOffset, int //update open editors QString titlePattern = tr("JS Source for %1").arg(fileName); //Check if there are open editors with the same title - QList<Core::IEditor *> editors = Core::EditorManager::instance()->openedEditors(); - foreach (Core::IEditor *editor, editors) { - if (editor->document()->displayName() == titlePattern) { - updateEditor(editor, document); + foreach (Core::IDocument *doc, Core::EditorManager::documentModel()->openedDocuments()) { + if (doc->displayName() == titlePattern) { + updateDocument(doc, document); break; } } } -void QmlEngine::updateEditor(Core::IEditor *editor, const QTextDocument *document) +void QmlEngine::updateDocument(Core::IDocument *document, const QTextDocument *textDocument) { - TextEditor::ITextEditor *textEditor = qobject_cast<TextEditor::ITextEditor*>(editor); - if (!textEditor) + TextEditor::BaseTextDocument *baseTextDocument + = qobject_cast<TextEditor::BaseTextDocument *>(document); + if (!baseTextDocument) return; - QPlainTextEdit *plainTextEdit = - qobject_cast<QPlainTextEdit *>(editor->widget()); - if (!plainTextEdit) - return; - plainTextEdit->setPlainText(document->toPlainText()); - plainTextEdit->setReadOnly(true); + baseTextDocument->document()->setPlainText(textDocument->toPlainText()); } bool QmlEngine::canEvaluateScript(const QString &script) diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 0c8ef50b470d050ed306c28a45e1cac7e9cabf05..4eb3807819a42b00e58683124b3378f944f035b3 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -43,7 +43,7 @@ #include <QTextDocument> namespace Core { -class IEditor; +class IDocument; } namespace Debugger { @@ -181,7 +181,7 @@ private: const QString &oldBasePath, const QString &newBasePath) const; QString qmlImportPath() const; - void updateEditor(Core::IEditor *editor, const QTextDocument *document); + void updateDocument(Core::IDocument *document, const QTextDocument *textDocument); bool canEvaluateScript(const QString &script); bool adjustBreakpointLineAndColumn(const QString &filePath, quint32 *line, quint32 *column, bool *valid); diff --git a/src/plugins/debugger/sourceagent.cpp b/src/plugins/debugger/sourceagent.cpp index 16132473fc19f9858d1cb5fac0596e32943dc810..daa966204a70de2be87876662837cd7618df0655 100644 --- a/src/plugins/debugger/sourceagent.cpp +++ b/src/plugins/debugger/sourceagent.cpp @@ -117,7 +117,7 @@ void SourceAgent::setContent(const QString &filePath, const QString &content) CppEditor::Constants::CPPEDITOR_ID, &titlePattern, content)); QTC_ASSERT(d->editor, return); - d->editor->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true); + d->editor->document()->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true); BaseTextEditorWidget *baseTextEdit = qobject_cast<BaseTextEditorWidget *>(d->editor->widget());