diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp index 35c702af534..b3231baf02d 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp @@ -63,8 +63,9 @@ void TextEditorView::modelAttached(Model *model) AbstractView::modelAttached(model); + DesignDocument *designDocument = QmlDesignerPlugin::instance()->currentDesignDocument(); auto textEditor = Utils::UniqueObjectLatePtr( - QmlDesignerPlugin::instance()->currentDesignDocument()->textEditor()->duplicate()); + designDocument->textEditor()->duplicate()); static constexpr char qmlTextEditorContextId[] = "QmlDesigner::TextEditor"; IContext::attach(textEditor->widget(), Context(qmlTextEditorContextId, Constants::qtQuickToolsMenuContextId), @@ -72,6 +73,12 @@ void TextEditorView::modelAttached(Model *model) m_widget->contextHelp(callback); }); m_widget->setTextEditor(std::move(textEditor)); + + disconnect(m_designDocumentConnection); + m_designDocumentConnection = connect(designDocument, + &DesignDocument::designDocumentClosed, + m_widget, + [this] { m_widget->setTextEditor(nullptr); }); } void TextEditorView::modelAboutToBeDetached(Model *model) @@ -80,6 +87,7 @@ void TextEditorView::modelAboutToBeDetached(Model *model) if (m_widget) m_widget->setTextEditor(nullptr); + disconnect(m_designDocumentConnection); } void TextEditorView::importsChanged(const Imports &/*addedImports*/, const Imports &/*removedImports*/) diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.h b/src/plugins/qmldesigner/components/texteditor/texteditorview.h index b8c624984b1..75355604b2a 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.h +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.h @@ -78,6 +78,7 @@ public: private: QPointer m_widget; + QMetaObject::Connection m_designDocumentConnection; bool m_errorState = false; };