diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp index 125fa5c50a4..2ded8d8635a 100644 --- a/src/plugins/android/androidmanifesteditorwidget.cpp +++ b/src/plugins/android/androidmanifesteditorwidget.cpp @@ -96,14 +96,12 @@ Project *androidProject(const QString &file) } // anonymous namespace AndroidManifestEditorWidget::AndroidManifestEditorWidget(QWidget *parent) - : TextEditor::PlainTextEditorWidget(parent), + : TextEditor::PlainTextEditorWidget(new AndroidManifestDocument(this), parent), m_dirty(false), m_stayClean(false), m_setAppName(false), m_appNameInStringsXml(false) { - setBaseTextDocument(QSharedPointer(new AndroidManifestDocument(this))); - configure(QLatin1String(Constants::ANDROID_MANIFEST_MIME_TYPE)); initializePage(); @@ -126,7 +124,6 @@ TextEditor::BaseTextEditor *AndroidManifestEditorWidget::createEditor() return new AndroidManifestEditor(this); } - void AndroidManifestEditorWidget::initializePage() { QWidget *mainWidget = new QWidget(this); diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index 06e9f3c135c..805b865adb1 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -116,10 +116,8 @@ void CMakeEditor::build() // CMakeEditorWidget::CMakeEditorWidget(QWidget *parent) - : BaseTextEditorWidget(parent) + : BaseTextEditorWidget(new CMakeDocument(), parent) { - setBaseTextDocument(QSharedPointer(new CMakeDocument)); - baseTextDocument()->setSyntaxHighlighter(new CMakeHighlighter); m_commentDefinition.clearCommentStyles(); diff --git a/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp b/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp index cb9e11f3ef7..1212ea00605 100644 --- a/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp +++ b/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp @@ -104,7 +104,7 @@ public: // Open file QScopedPointer editorWidget( - new TextEditor::PlainTextEditorWidget(0)); + new TextEditor::PlainTextEditorWidget); QString error; editorWidget->open(&error, document->fileName(), document->fileName()); QVERIFY(error.isEmpty()); diff --git a/src/plugins/designer/designerxmleditorwidget.cpp b/src/plugins/designer/designerxmleditorwidget.cpp index b7a5a70baa2..b280a5d0137 100644 --- a/src/plugins/designer/designerxmleditorwidget.cpp +++ b/src/plugins/designer/designerxmleditorwidget.cpp @@ -39,13 +39,11 @@ namespace Internal { DesignerXmlEditorWidget::DesignerXmlEditorWidget(QDesignerFormWindowInterface *form, QWidget *parent) : - TextEditor::PlainTextEditorWidget(parent), - m_file(new FormWindowFile(form, this)), + TextEditor::PlainTextEditorWidget(new FormWindowFile(form, this), parent), m_designerEditor(new FormWindowEditor(this)) { - setBaseTextDocument(m_file); setReadOnly(true); - configure(m_file->mimeType()); + configure(baseTextDocument()->mimeType()); } TextEditor::BaseTextEditor *DesignerXmlEditorWidget::createEditor() @@ -62,7 +60,7 @@ FormWindowEditor *DesignerXmlEditorWidget::designerEditor() const Internal::FormWindowFile *DesignerXmlEditorWidget::formWindowFile() const { - return m_file.data(); + return qobject_cast(baseTextDocument()); } } // namespace Internal diff --git a/src/plugins/designer/designerxmleditorwidget.h b/src/plugins/designer/designerxmleditorwidget.h index e0c10552af5..34714610069 100644 --- a/src/plugins/designer/designerxmleditorwidget.h +++ b/src/plugins/designer/designerxmleditorwidget.h @@ -67,7 +67,6 @@ protected: virtual TextEditor::BaseTextEditor *createEditor(); private: - QSharedPointer m_file; FormWindowEditor *m_designerEditor; }; diff --git a/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp b/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp index b7b321de36b..6ef0c59eb0d 100644 --- a/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp +++ b/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp @@ -109,8 +109,6 @@ Core::IEditor *ProjectFilesEditor::duplicate() ProjectFilesEditorWidget::ProjectFilesEditorWidget(QWidget *parent) : BaseTextEditorWidget(parent) { - QSharedPointer doc(new BaseTextDocument()); - setBaseTextDocument(doc); } BaseTextEditor *ProjectFilesEditorWidget::createEditor() diff --git a/src/plugins/qmakeprojectmanager/profileeditor.cpp b/src/plugins/qmakeprojectmanager/profileeditor.cpp index 81237fd8256..6e9e7556abd 100644 --- a/src/plugins/qmakeprojectmanager/profileeditor.cpp +++ b/src/plugins/qmakeprojectmanager/profileeditor.cpp @@ -83,11 +83,8 @@ TextEditor::CompletionAssistProvider *ProFileEditor::completionAssistProvider() // ProFileEditorWidget::ProFileEditorWidget(ProFileEditorFactory *factory, QWidget *parent) - : BaseTextEditorWidget(parent), m_factory(factory) + : BaseTextEditorWidget(new ProFileDocument(), parent), m_factory(factory) { - QSharedPointer doc(new ProFileDocument()); - setBaseTextDocument(doc); - baseTextDocument()->setSyntaxHighlighter(new ProFileHighlighter); m_commentDefinition.clearCommentStyles(); m_commentDefinition.singleLine = QLatin1Char('#'); diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index a1218fa8c4f..167a436c579 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -188,9 +188,19 @@ QString BaseTextEditorWidget::convertToPlainText(const QString &txt) static const char kTextBlockMimeType[] = "application/vnd.qtcreator.blocktext"; static const char kVerticalTextBlockMimeType[] = "application/vnd.qtcreator.vblocktext"; - BaseTextEditorWidget::BaseTextEditorWidget(QWidget *parent) : QPlainTextEdit(parent) +{ + ctor(QSharedPointer(new BaseTextDocument)); +} + +BaseTextEditorWidget::BaseTextEditorWidget(BaseTextDocument *doc, QWidget *parent) + : QPlainTextEdit(parent) +{ + ctor(QSharedPointer(doc)); +} + +void BaseTextEditorWidget::ctor(const QSharedPointer &doc) { d = new BaseTextEditorWidgetPrivate; d->q = this; @@ -203,6 +213,7 @@ BaseTextEditorWidget::BaseTextEditorWidget(QWidget *parent) d->m_searchResultOverlay = new TextEditorOverlay(this); d->m_refactorOverlay = new RefactorOverlay(this); + d->m_document = doc; d->setupDocumentSignals(d->m_document); d->m_lastScrollPos = -1; @@ -2079,14 +2090,6 @@ void BaseTextEditorWidget::duplicateFrom(BaseTextEditorWidget *widget) d->m_document = widget->d->m_document; } -void BaseTextEditorWidget::setBaseTextDocument(const QSharedPointer &doc) -{ - if (!doc.isNull()) { - d->setupDocumentSignals(doc); - d->m_document = doc; - } -} - void BaseTextEditorWidget::documentAboutToBeReloaded() { //memorize cursor position @@ -2405,7 +2408,6 @@ BaseTextEditorWidgetPrivate::BaseTextEditorWidgetPrivate() q(0), m_contentsChanged(false), m_lastCursorChangeWasInteresting(false), - m_document(new BaseTextDocument), m_parenthesesMatchingEnabled(false), m_updateTimer(0), m_formatRange(false), diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index d91bc6d9216..0f01d11ea12 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -130,7 +130,8 @@ class TEXTEDITOR_EXPORT BaseTextEditorWidget : public QPlainTextEdit Q_PROPERTY(int verticalBlockSelectionLastColumn READ verticalBlockSelectionLastColumn) public: - BaseTextEditorWidget(QWidget *parent); + BaseTextEditorWidget(QWidget *parent = 0); + BaseTextEditorWidget(BaseTextDocument *doc, QWidget *parent = 0); ~BaseTextEditorWidget(); const Utils::ChangeSet &changeSet() const; @@ -359,8 +360,6 @@ public: void duplicateFrom(BaseTextEditorWidget *editor); protected: - void setBaseTextDocument(const QSharedPointer &doc); - void setDefaultPath(const QString &defaultPath); virtual BaseTextEditor *createEditor() = 0; @@ -538,6 +537,7 @@ signals: void requestBlockUpdate(const QTextBlock &); private: + void ctor(const QSharedPointer &doc); void indentOrUnindent(bool doIndent); void handleHomeKey(bool anchor); void handleBackspaceKey(); diff --git a/src/plugins/texteditor/plaintexteditor.cpp b/src/plugins/texteditor/plaintexteditor.cpp index 4893aa22093..5d618d2c4db 100644 --- a/src/plugins/texteditor/plaintexteditor.cpp +++ b/src/plugins/texteditor/plaintexteditor.cpp @@ -58,9 +58,20 @@ PlainTextEditor::PlainTextEditor(PlainTextEditorWidget *editor) } PlainTextEditorWidget::PlainTextEditorWidget(QWidget *parent) - : BaseTextEditorWidget(parent), - m_isMissingSyntaxDefinition(false) + : BaseTextEditorWidget(parent) { + ctor(); +} + +PlainTextEditorWidget::PlainTextEditorWidget(BaseTextDocument *doc, QWidget *parent) + : BaseTextEditorWidget(doc, parent) +{ + ctor(); +} + +void PlainTextEditorWidget::ctor() +{ + m_isMissingSyntaxDefinition = false; setRevisionsVisible(true); setMarksVisible(true); setLineSeparatorsAllowed(true); diff --git a/src/plugins/texteditor/plaintexteditor.h b/src/plugins/texteditor/plaintexteditor.h index 76909fc78ca..88118054e00 100644 --- a/src/plugins/texteditor/plaintexteditor.h +++ b/src/plugins/texteditor/plaintexteditor.h @@ -60,6 +60,7 @@ class TEXTEDITOR_EXPORT PlainTextEditorWidget : public BaseTextEditorWidget public: PlainTextEditorWidget(QWidget *parent = 0); + PlainTextEditorWidget(BaseTextDocument *doc, QWidget *parent = 0); void configure(const QString& mimeType); void configure(const Core::MimeType &mimeType); @@ -80,6 +81,8 @@ protected: virtual BaseTextEditor *createEditor() { return new PlainTextEditor(this); } private: + void ctor(); + bool m_isMissingSyntaxDefinition; Utils::CommentDefinition m_commentDefinition; };