forked from qt-creator/qt-creator
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:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user