diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 496c53f964c..66ad105bc39 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -2364,7 +2364,7 @@ public: ~TestCase() { - Core::EditorManager::closeEditor(m_editor, false); + Core::EditorManager::closeDocument(m_editor->document(), false); QCoreApplication::processEvents(); // process any pending events QFile file(m_fileName); diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index ef12101f45f..52d9a2eabf5 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -1576,7 +1576,7 @@ void EditorManagerPrivate::closeEditorFromContextMenu() { IDocument *document = d->m_contextMenuEntry ? d->m_contextMenuEntry->document : 0; if (document) - EditorManager::closeEditors(DocumentModel::editorsForDocument(document)); + EditorManager::closeDocument(document); } void EditorManagerPrivate::closeOtherDocumentsFromContextMenu() @@ -2327,6 +2327,11 @@ QList EditorManager::visibleEditors() return editors; } +bool EditorManager::closeDocument(IDocument *document, bool askAboutModifiedEditors) +{ + return closeDocuments(QList() << document, askAboutModifiedEditors); +} + bool EditorManager::closeDocuments(const QList &document, bool askAboutModifiedEditors) { return m_instance->closeEditors(DocumentModel::editorsForDocuments(document), askAboutModifiedEditors); diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index fa374d6724a..829f8c21be4 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -132,6 +132,7 @@ public: static void activateEditorForEntry(DocumentModel::Entry *entry, OpenEditorFlags flags = 0); static IEditor *activateEditorForDocument(IDocument *document, OpenEditorFlags flags = 0); + static bool closeDocument(IDocument *document, bool askAboutModifiedEditors = true); static bool closeDocuments(const QList &documents, bool askAboutModifiedEditors = true); static void closeDocument(DocumentModel::Entry *entry); static void closeOtherDocuments(IDocument *document); diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 6f7a6f1fa06..0366a57b39d 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -730,7 +730,7 @@ void CppToolsPlugin::test_modelmanager_gc_if_last_cppeditor_closed() helper.waitForRefreshedSourceFiles(); // Close file/editor - Core::EditorManager::closeEditor(editor, /*askAboutModifiedEditors=*/ false); + Core::EditorManager::closeDocument(editor->document(), /*askAboutModifiedEditors=*/ false); helper.waitForFinishedGc(); // Check: File is removed from the snapshpt @@ -769,7 +769,7 @@ void CppToolsPlugin::test_modelmanager_dont_gc_opened_files() QVERIFY(mm->snapshot().contains(file)); // Close editor - Core::EditorManager::closeEditor(editor); + Core::EditorManager::closeDocument(editor->document()); helper.waitForFinishedGc(); QVERIFY(mm->snapshot().isEmpty()); } diff --git a/src/plugins/debugger/memoryagent.cpp b/src/plugins/debugger/memoryagent.cpp index 4dc53de8256..4c28ee89981 100644 --- a/src/plugins/debugger/memoryagent.cpp +++ b/src/plugins/debugger/memoryagent.cpp @@ -104,11 +104,11 @@ void MemoryAgent::closeEditors() if (m_editors.isEmpty()) return; - QList editors; + QSet documents; foreach (QPointer editor, m_editors) if (editor) - editors.append(editor.data()); - EditorManager::closeEditors(editors); + documents.insert(editor->document()); + EditorManager::closeDocuments(documents.toList()); m_editors.clear(); } diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 73b10d98afe..714b731bdb0 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -340,15 +340,15 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters, DebuggerEng QmlEngine::~QmlEngine() { - QList editorsToClose; + QSet documentsToClose; QHash >::iterator iter; for (iter = m_sourceEditors.begin(); iter != m_sourceEditors.end(); ++iter) { QWeakPointer textEditPtr = iter.value(); if (textEditPtr) - editorsToClose << textEditPtr.data(); + documentsToClose << textEditPtr.data()->document(); } - Core::EditorManager::closeEditors(editorsToClose); + Core::EditorManager::closeDocuments(documentsToClose.toList()); } void QmlEngine::notifyInferiorSetupOk() diff --git a/src/plugins/debugger/sourceagent.cpp b/src/plugins/debugger/sourceagent.cpp index 957ffd1a4a4..9d3a86bb777 100644 --- a/src/plugins/debugger/sourceagent.cpp +++ b/src/plugins/debugger/sourceagent.cpp @@ -77,7 +77,8 @@ SourceAgentPrivate::SourceAgentPrivate() SourceAgentPrivate::~SourceAgentPrivate() { - EditorManager::closeEditor(editor); + if (editor) + EditorManager::closeDocument(editor->document()); editor = 0; delete locationMark; } diff --git a/src/plugins/texteditor/basetexteditor_test.cpp b/src/plugins/texteditor/basetexteditor_test.cpp index bfb0fc2b738..6f3616cd501 100644 --- a/src/plugins/texteditor/basetexteditor_test.cpp +++ b/src/plugins/texteditor/basetexteditor_test.cpp @@ -149,7 +149,7 @@ void Internal::TextEditorPlugin::testBlockSelectionTransformation() } QCOMPARE(textEditor->textDocument()->plainText(), transformedText); } - Core::EditorManager::closeEditor(editor, false); + Core::EditorManager::closeDocument(editor->document(), false); } static const char text[] = @@ -364,7 +364,7 @@ void Internal::TextEditorPlugin::testBlockSelectionInsert() QCOMPARE(textEditor->textDocument()->plainText(), transformedText); } - Core::EditorManager::closeEditor(editor, false); + Core::EditorManager::closeDocument(editor->document(), false); } @@ -442,7 +442,7 @@ void Internal::TextEditorPlugin::testBlockSelectionRemove() QCOMPARE(textEditor->textDocument()->plainText(), transformedText); } - Core::EditorManager::closeEditor(editor, false); + Core::EditorManager::closeDocument(editor->document(), false); } void Internal::TextEditorPlugin::testBlockSelectionCopy_data() @@ -497,7 +497,7 @@ void Internal::TextEditorPlugin::testBlockSelectionCopy() QCOMPARE(qApp->clipboard()->text(), copiedText); } - Core::EditorManager::closeEditor(editor, false); + Core::EditorManager::closeDocument(editor->document(), false); } #endif // ifdef WITH_TESTS