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();
for (auto editor : Core::DocumentModel::editorsForOpenedDocuments()) {
if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) {
auto highlighterCreator = textEditor->textDocument()->syntaxHighlighterRunner()->creator();
if (highlighterCreator && qobject_cast<Highlighter *>(highlighterCreator()))
if (auto highlighterRunner = textEditor->textDocument()->syntaxHighlighterRunner();
highlighterRunner && highlighterRunner->useGenericHighlighter()) {
textEditor->editorWidget()->configureGenericHighlighter();
}
}
}
}

View File

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

View File

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