From 5328674479502660586d4fbc9757c494141bd8b3 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 8 Feb 2024 14:17:20 +0100 Subject: [PATCH] TextEditor: simplify SyntaxHighlighterRunner interface Change-Id: I6c8d51d8dccc91514c89267eac2cea66c87a871a Reviewed-by: Artem Sokolovskii Reviewed-by: Jarek Kobus --- .../texteditor/syntaxhighlighterrunner.cpp | 19 ++++++------------- .../texteditor/syntaxhighlighterrunner.h | 7 +------ src/plugins/texteditor/textdocument.cpp | 8 +++++--- .../highlighter/tst_highlighter.cpp | 5 ++--- 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/plugins/texteditor/syntaxhighlighterrunner.cpp b/src/plugins/texteditor/syntaxhighlighterrunner.cpp index 68a1962f965..bf53d90561b 100644 --- a/src/plugins/texteditor/syntaxhighlighterrunner.cpp +++ b/src/plugins/texteditor/syntaxhighlighterrunner.cpp @@ -27,16 +27,11 @@ class SyntaxHighlighterRunnerPrivate : public QObject { Q_OBJECT public: - SyntaxHighlighterRunnerPrivate(SyntaxHighlighterRunner::SyntaxHighlighterCreator creator, + SyntaxHighlighterRunnerPrivate(SyntaxHighlighter *highlighter, QTextDocument *document, - bool async, - const QString &mimeType, - FontSettings fontSettings) + bool async) + : m_highlighter(highlighter) { - m_highlighter = creator(); - m_highlighter->setFontSettings(fontSettings); - m_highlighter->setMimeType(mimeType); - if (async) { m_document = new QTextDocument(this); m_document->setDocumentLayout(new TextDocumentLayout(m_document)); @@ -111,12 +106,10 @@ signals: }; -SyntaxHighlighterRunner::SyntaxHighlighterRunner(SyntaxHighlighterCreator creator, +SyntaxHighlighterRunner::SyntaxHighlighterRunner(SyntaxHighlighter *highlighter, QTextDocument *document, - bool async, - const QString &mimeType, - const TextEditor::FontSettings &fontSettings) - : d(new SyntaxHighlighterRunnerPrivate(creator, document, async, mimeType, fontSettings)) + bool async) + : d(new SyntaxHighlighterRunnerPrivate(highlighter, document, async)) , m_document(document) { m_useGenericHighlighter = qobject_cast(d->m_highlighter); diff --git a/src/plugins/texteditor/syntaxhighlighterrunner.h b/src/plugins/texteditor/syntaxhighlighterrunner.h index 7202ebf401d..ccb292ea086 100644 --- a/src/plugins/texteditor/syntaxhighlighterrunner.h +++ b/src/plugins/texteditor/syntaxhighlighterrunner.h @@ -24,12 +24,7 @@ class TEXTEDITOR_EXPORT SyntaxHighlighterRunner : public QObject public: using SyntaxHighlighterCreator = std::function; - SyntaxHighlighterRunner( - SyntaxHighlighterCreator creator, - QTextDocument *document, - bool async, - const QString &mimeType, - const TextEditor::FontSettings &fontSettings = TextEditorSettings::fontSettings()); + SyntaxHighlighterRunner(SyntaxHighlighter *highlighter, QTextDocument *document, bool async); virtual ~SyntaxHighlighterRunner(); void setExtraFormats(const QMap> &formats); diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp index a60c729ed4a..cb421f2bf7c 100644 --- a/src/plugins/texteditor/textdocument.cpp +++ b/src/plugins/texteditor/textdocument.cpp @@ -921,10 +921,12 @@ void TextDocument::resetSyntaxHighlighter(const std::functionm_highlighterRunner = new SyntaxHighlighterRunner(creator, + SyntaxHighlighter *highlighter = creator(); + highlighter->setFontSettings(TextEditorSettings::fontSettings()); + highlighter->setMimeType(mimeType()); + d->m_highlighterRunner = new SyntaxHighlighterRunner(highlighter, document(), - threaded && envValue, - mimeType()); + threaded && envValue); } void TextDocument::cleanWhitespace(const QTextCursor &cursor) diff --git a/tests/auto/texteditor/highlighter/tst_highlighter.cpp b/tests/auto/texteditor/highlighter/tst_highlighter.cpp index aaba61161bc..9044065a019 100644 --- a/tests/auto/texteditor/highlighter/tst_highlighter.cpp +++ b/tests/auto/texteditor/highlighter/tst_highlighter.cpp @@ -58,9 +58,8 @@ Last)"; doc = new QTextDocument(); doc->setPlainText(text); - - highlighterRunner = new SyntaxHighlighterRunner( - [this] { return new SyntaxHighlighter(doc, fontsettings); }, doc, false, {}, fontsettings); + auto highlighter = new SyntaxHighlighter(doc, fontsettings); + highlighterRunner = new SyntaxHighlighterRunner(highlighter, doc, false); } static const HighlightingResults &highlightingResults()