TextEditor: avoid creating an highlighter to check a type

check the type after construcing the highlighter instead and save that
information.

Change-Id: I7d942dae4be8471dba90dd266267ff7fa1b6f440
Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
This commit is contained in:
David Schulz
2023-12-21 15:01:12 +01:00
parent e1535f5f39
commit a4f9267df1
3 changed files with 18 additions and 8 deletions

View File

@@ -210,9 +210,10 @@ void reload()
highlightRepository()->reload(); highlightRepository()->reload();
for (auto editor : Core::DocumentModel::editorsForOpenedDocuments()) { for (auto editor : Core::DocumentModel::editorsForOpenedDocuments()) {
if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) { if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) {
auto highlighterCreator = textEditor->textDocument()->syntaxHighlighterRunner()->creator(); if (auto highlighterRunner = textEditor->textDocument()->syntaxHighlighterRunner();
if (highlighterCreator && qobject_cast<Highlighter *>(highlighterCreator())) highlighterRunner && highlighterRunner->useGenericHighlighter()) {
textEditor->editorWidget()->configureGenericHighlighter(); textEditor->editorWidget()->configureGenericHighlighter();
}
} }
} }
} }

View File

@@ -6,6 +6,7 @@
#include "fontsettings.h" #include "fontsettings.h"
#include "textdocumentlayout.h" #include "textdocumentlayout.h"
#include "texteditorsettings.h" #include "texteditorsettings.h"
#include "highlighter.h"
#include <utils/textutils.h> #include <utils/textutils.h>
@@ -92,13 +93,13 @@ public:
void rehighlight() { m_highlighter->rehighlight(); } void rehighlight() { m_highlighter->rehighlight(); }
signals:
void resultsReady(const QList<SyntaxHighlighter::Result> &result);
private:
std::unique_ptr<SyntaxHighlighter> m_highlighter; std::unique_ptr<SyntaxHighlighter> m_highlighter;
QTextDocument *m_document = nullptr; QTextDocument *m_document = nullptr;
FontSettings m_fontSettings; FontSettings m_fontSettings;
signals:
void resultsReady(const QList<SyntaxHighlighter::Result> &result);
}; };
// ----------------------------- BaseSyntaxHighlighterRunner -------------------------------------- // ----------------------------- BaseSyntaxHighlighterRunner --------------------------------------
@@ -110,6 +111,8 @@ BaseSyntaxHighlighterRunner::BaseSyntaxHighlighterRunner(
: d(new SyntaxHighlighterRunnerPrivate(creator, document, fontSettings)) : d(new SyntaxHighlighterRunnerPrivate(creator, document, fontSettings))
, m_document(document) , m_document(document)
{ {
m_useGenericHighlighter = qobject_cast<Highlighter *>(d->m_highlighter.get());
if (document == nullptr) if (document == nullptr)
return; return;
@@ -176,6 +179,11 @@ void BaseSyntaxHighlighterRunner::changeDocument(int from, int charsRemoved, int
}); });
} }
bool BaseSyntaxHighlighterRunner::useGenericHighlighter() const
{
return m_useGenericHighlighter;
}
void BaseSyntaxHighlighterRunner::setExtraFormats( void BaseSyntaxHighlighterRunner::setExtraFormats(
const QMap<int, QList<QTextLayout::FormatRange>> &formatMap) const QMap<int, QList<QTextLayout::FormatRange>> &formatMap)
{ {

View File

@@ -48,9 +48,10 @@ public:
void setDefinitionName(const QString &name); void setDefinitionName(const QString &name);
QTextDocument *document() const { return m_document; } QTextDocument *document() const { return m_document; }
SyntaxHighLighterCreator creator() const { return m_creator; } bool useGenericHighlighter() const;
bool syntaxInfoUpdated() const { return m_syntaxInfoUpdated == SyntaxHighlighter::State::Done; } bool syntaxInfoUpdated() const { return m_syntaxInfoUpdated == SyntaxHighlighter::State::Done; }
signals: signals:
void highlightingFinished(); void highlightingFinished();
@@ -63,7 +64,7 @@ protected:
SyntaxHighlighter::State m_syntaxInfoUpdated = SyntaxHighlighter::State::Done; SyntaxHighlighter::State m_syntaxInfoUpdated = SyntaxHighlighter::State::Done;
private: private:
SyntaxHighLighterCreator m_creator; bool m_useGenericHighlighter = false;
QString m_definitionName; QString m_definitionName;
}; };