From a3608f595ad13f8925ad797da8ca7ddec6e36051 Mon Sep 17 00:00:00 2001 From: Eike Ziller <eike.ziller@digia.com> Date: Thu, 9 Jan 2014 14:47:00 +0100 Subject: [PATCH] Editors: Remove BaseTextEditorWidget::setBaseTextDocument First step in never changing the text document after construction, because that is actually not really supported. Second step will be to fix that for the editor duplicate() methods too. Change-Id: I3d112ba0895e7ee7ac6dd8ae2318f0de7d2cebc9 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> --- .../android/androidmanifesteditorwidget.cpp | 5 +---- .../cmakeprojectmanager/cmakeeditor.cpp | 4 +--- .../cpppointerdeclarationformatter_test.cpp | 2 +- .../designer/designerxmleditorwidget.cpp | 8 +++---- .../designer/designerxmleditorwidget.h | 1 - .../genericprojectfileseditor.cpp | 2 -- .../qmakeprojectmanager/profileeditor.cpp | 5 +---- src/plugins/texteditor/basetexteditor.cpp | 22 ++++++++++--------- src/plugins/texteditor/basetexteditor.h | 6 ++--- src/plugins/texteditor/plaintexteditor.cpp | 15 +++++++++++-- src/plugins/texteditor/plaintexteditor.h | 3 +++ 11 files changed, 38 insertions(+), 35 deletions(-) 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<AndroidManifestDocument>(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<CMakeDocument>(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<TextEditor::BaseTextEditorWidget> 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<FormWindowFile *>(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<Internal::FormWindowFile> 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<BaseTextDocument> 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<ProFileDocument> 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<BaseTextDocument>(new BaseTextDocument)); +} + +BaseTextEditorWidget::BaseTextEditorWidget(BaseTextDocument *doc, QWidget *parent) + : QPlainTextEdit(parent) +{ + ctor(QSharedPointer<BaseTextDocument>(doc)); +} + +void BaseTextEditorWidget::ctor(const QSharedPointer<BaseTextDocument> &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<BaseTextDocument> &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<BaseTextDocument> &doc); - void setDefaultPath(const QString &defaultPath); virtual BaseTextEditor *createEditor() = 0; @@ -538,6 +537,7 @@ signals: void requestBlockUpdate(const QTextBlock &); private: + void ctor(const QSharedPointer<BaseTextDocument> &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; }; -- GitLab