From 307129bf8fb32ae65a171b9b97fdaeb6ff70c02d Mon Sep 17 00:00:00 2001 From: hjk <hjk121@nokiamail.com> Date: Thu, 21 Aug 2014 18:08:58 +0200 Subject: [PATCH] CppEditor: Partially move to new editor setup scheme This needs more reorganization. For now, use a method to add cpp editor support directly without relying on a fully set up editor/widget/document combo. Change-Id: Id8631c75ccd209f418faef31f8b8a4c71e53d87d Reviewed-by: Christian Stenger <christian.stenger@digia.com> --- src/plugins/cppeditor/cppeditor.cpp | 22 +++++++++++----------- src/plugins/cppeditor/cppeditor.h | 2 +- src/plugins/cppeditor/cppeditorplugin.cpp | 8 +++++--- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 438d97ceb5..b1f0df599d 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -127,8 +127,6 @@ public: CppEditorWidgetPrivate(CppEditorWidget *q); public: - CppEditorWidget *q; - QPointer<CppTools::CppModelManagerInterface> m_modelManager; CPPEditorDocument *m_cppEditorDocument; @@ -160,8 +158,7 @@ public: }; CppEditorWidgetPrivate::CppEditorWidgetPrivate(CppEditorWidget *q) - : q(q) - , m_modelManager(CppModelManagerInterface::instance()) + : m_modelManager(CppModelManagerInterface::instance()) , m_cppEditorDocument(qobject_cast<CPPEditorDocument *>(q->textDocument())) , m_cppEditorOutline(new CppEditorOutline(q)) , m_cppDocumentationCommentHelper(q) @@ -175,9 +172,10 @@ CppEditorWidgetPrivate::CppEditorWidgetPrivate(CppEditorWidget *q) { } -CppEditorWidget::CppEditorWidget(TextEditor::BaseTextDocumentPtr doc) - : TextEditor::BaseTextEditorWidget(0) +CppEditorWidget::CppEditorWidget(TextEditor::BaseTextDocumentPtr doc, CPPEditor *editor) { + editor->setEditorWidget(this); + setTextDocument(doc); d.reset(new CppEditorWidgetPrivate(this)); setAutoCompleter(new CppAutoCompleter); @@ -190,7 +188,7 @@ CppEditorWidget::CppEditorWidget(TextEditor::BaseTextDocumentPtr doc) setRevisionsVisible(true); if (d->m_modelManager) { - CppEditorSupport *editorSupport = d->m_modelManager->cppEditorSupport(editor()); + CppEditorSupport *editorSupport = d->m_modelManager->cppEditorSupport(editor); connect(editorSupport, SIGNAL(documentUpdated()), this, SLOT(onDocumentUpdated())); connect(editorSupport, SIGNAL(semanticInfoUpdated(CppTools::SemanticInfo)), @@ -262,7 +260,7 @@ CppEditorOutline *CppEditorWidget::outline() const TextEditor::BaseTextEditor *CppEditorWidget::createEditor() { - return new CPPEditor; + QTC_ASSERT("should not happen anymore" && false, return 0); } void CppEditorWidget::paste() @@ -743,9 +741,11 @@ void CppEditorWidget::keyPressEvent(QKeyEvent *e) Core::IEditor *CPPEditor::duplicate() { - CppEditorWidget *newEditor = new CppEditorWidget(editorWidget()->textDocumentPtr()); - CppEditorPlugin::instance()->initializeEditor(newEditor); - return newEditor->editor(); + CPPEditor *editor = new CPPEditor; + CppEditorWidget *widget = new CppEditorWidget(editorWidget()->textDocumentPtr(), editor); + CppEditorPlugin::instance()->initializeEditor(widget); + editor->configureCodeAssistant(); + return editor; } bool CPPEditor::open(QString *errorString, const QString &fileName, const QString &realFileName) diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 6b24b72443..d7c6df96f3 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -75,7 +75,7 @@ public: static Link linkToSymbol(CPlusPlus::Symbol *symbol); public: - CppEditorWidget(TextEditor::BaseTextDocumentPtr doc); + CppEditorWidget(TextEditor::BaseTextDocumentPtr doc, CPPEditor *editor); ~CppEditorWidget(); CPPEditorDocument *cppEditorDocument() const; diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index a12f542793..81e5e81653 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -96,9 +96,11 @@ CppEditorFactory::CppEditorFactory(CppEditorPlugin *owner) : IEditor *CppEditorFactory::createEditor() { - CppEditorWidget *editor = new CppEditorWidget(BaseTextDocumentPtr(new CPPEditorDocument)); - m_owner->initializeEditor(editor); - return editor->editor(); + CPPEditor *editor = new CPPEditor; + CppEditorWidget *widget = new CppEditorWidget(BaseTextDocumentPtr(new CPPEditorDocument), editor); + m_owner->initializeEditor(widget); + editor->configureCodeAssistant(); + return editor; } ///////////////////////////////// CppEditorPlugin ////////////////////////////////// -- GitLab