From dd78b90b5ce6e99a57ca379a4fa59875057e3d08 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 30 Aug 2024 14:41:34 +0200 Subject: [PATCH] TextEditor: move TextSuggestion into own set of files Since the plan is to extend the functionality of TextSuggestion, this would add too much unrelated code to the text document layout implementation file. Change-Id: Ia5a7c12e75bf843a8741f325c81524d0c504286c Reviewed-by: Marcus Tillmanns --- src/plugins/texteditor/CMakeLists.txt | 3 +- src/plugins/texteditor/textdocumentlayout.cpp | 8 ---- src/plugins/texteditor/textdocumentlayout.h | 28 ++------------ src/plugins/texteditor/texteditor.qbs | 4 +- src/plugins/texteditor/textsuggestion.cpp | 18 +++++++++ src/plugins/texteditor/textsuggestion.h | 37 +++++++++++++++++++ 6 files changed, 63 insertions(+), 35 deletions(-) create mode 100644 src/plugins/texteditor/textsuggestion.cpp create mode 100644 src/plugins/texteditor/textsuggestion.h diff --git a/src/plugins/texteditor/CMakeLists.txt b/src/plugins/texteditor/CMakeLists.txt index 010fa53b0e5..314522012e6 100644 --- a/src/plugins/texteditor/CMakeLists.txt +++ b/src/plugins/texteditor/CMakeLists.txt @@ -100,14 +100,15 @@ add_qtc_plugin(TextEditor texteditor.cpp texteditor.h texteditor.qrc texteditor_global.h - texteditortr.h texteditorconstants.cpp texteditorconstants.h texteditoroverlay.cpp texteditoroverlay.h texteditorplugin.cpp texteditorsettings.cpp texteditorsettings.h + texteditortr.h textindenter.cpp textindenter.h textmark.cpp textmark.h textstyles.h + textsuggestion.h textsuggestion.cpp typehierarchy.cpp typehierarchy.h typingsettings.cpp typingsettings.h ) diff --git a/src/plugins/texteditor/textdocumentlayout.cpp b/src/plugins/texteditor/textdocumentlayout.cpp index 27c2a059ac5..adff010cc44 100644 --- a/src/plugins/texteditor/textdocumentlayout.cpp +++ b/src/plugins/texteditor/textdocumentlayout.cpp @@ -877,14 +877,6 @@ void insertSorted(Parentheses &list, const Parenthesis &elem) list.insert(it, elem); } -TextSuggestion::TextSuggestion() -{ - m_replacementDocument.setDocumentLayout(new TextDocumentLayout(&m_replacementDocument)); - m_replacementDocument.setDocumentMargin(0); -} - -TextSuggestion::~TextSuggestion() = default; - } // TextEditor diff --git a/src/plugins/texteditor/textdocumentlayout.h b/src/plugins/texteditor/textdocumentlayout.h index 3ce9d660d0e..05e815a3ff3 100644 --- a/src/plugins/texteditor/textdocumentlayout.h +++ b/src/plugins/texteditor/textdocumentlayout.h @@ -5,15 +5,16 @@ #include "texteditor_global.h" -#include "textmark.h" #include "textdocument.h" +#include "textmark.h" +#include "textsuggestion.h" #include #include -#include #include +#include namespace TextEditor { @@ -43,29 +44,6 @@ public: virtual ~CodeFormatterData(); }; -class TEXTEDITOR_EXPORT TextSuggestion -{ -public: - TextSuggestion(); - virtual ~TextSuggestion(); - // Returns true if the suggestion was applied completely, false if it was only partially applied. - virtual bool apply() = 0; - // Returns true if the suggestion was applied completely, false if it was only partially applied. - virtual bool applyWord(TextEditorWidget *widget) = 0; - virtual bool applyLine(TextEditorWidget *widget) = 0; - virtual void reset() = 0; - virtual int position() = 0; - - int currentPosition() const { return m_currentPosition; } - void setCurrentPosition(int position) { m_currentPosition = position; } - - QTextDocument *document() { return &m_replacementDocument; } - -private: - QTextDocument m_replacementDocument; - int m_currentPosition = -1; -}; - class TEXTEDITOR_EXPORT TextBlockUserData : public QTextBlockUserData { public: diff --git a/src/plugins/texteditor/texteditor.qbs b/src/plugins/texteditor/texteditor.qbs index d0d0a020799..97458910a09 100644 --- a/src/plugins/texteditor/texteditor.qbs +++ b/src/plugins/texteditor/texteditor.qbs @@ -136,7 +136,6 @@ QtcPlugin { "texteditor.h", "texteditor.qrc", "texteditor_global.h", - "texteditortr.h", "texteditorconstants.cpp", "texteditorconstants.h", "texteditoroverlay.cpp", @@ -144,6 +143,9 @@ QtcPlugin { "texteditorplugin.cpp", "texteditorsettings.cpp", "texteditorsettings.h", + "texteditortr.h", + "textesuggestion.cpp", + "textesuggestion.h", "textindenter.cpp", "textindenter.h", "textmark.cpp", diff --git a/src/plugins/texteditor/textsuggestion.cpp b/src/plugins/texteditor/textsuggestion.cpp new file mode 100644 index 00000000000..78c58a6bacc --- /dev/null +++ b/src/plugins/texteditor/textsuggestion.cpp @@ -0,0 +1,18 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "textsuggestion.h" + +#include "textdocumentlayout.h" + +namespace TextEditor { + +TextSuggestion::TextSuggestion() +{ + m_replacementDocument.setDocumentLayout(new TextDocumentLayout(&m_replacementDocument)); + m_replacementDocument.setDocumentMargin(0); +} + +TextSuggestion::~TextSuggestion() = default; + +} // namespace TextEditor diff --git a/src/plugins/texteditor/textsuggestion.h b/src/plugins/texteditor/textsuggestion.h new file mode 100644 index 00000000000..5774fb41072 --- /dev/null +++ b/src/plugins/texteditor/textsuggestion.h @@ -0,0 +1,37 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#pragma once + +#include "texteditor_global.h" + +#include + +namespace TextEditor { + +class TextEditorWidget; + +class TEXTEDITOR_EXPORT TextSuggestion +{ +public: + TextSuggestion(); + virtual ~TextSuggestion(); + // Returns true if the suggestion was applied completely, false if it was only partially applied. + virtual bool apply() = 0; + // Returns true if the suggestion was applied completely, false if it was only partially applied. + virtual bool applyWord(TextEditorWidget *widget) = 0; + virtual bool applyLine(TextEditorWidget *widget) = 0; + virtual void reset() = 0; + virtual int position() = 0; + + int currentPosition() const { return m_currentPosition; } + void setCurrentPosition(int position) { m_currentPosition = position; } + + QTextDocument *document() { return &m_replacementDocument; } + +private: + QTextDocument m_replacementDocument; + int m_currentPosition = -1; +}; + +} // namespace TextEditor