SyntaxHighlighter: Connect signal to this not to document

Change-Id: I4e76c4e06f385075d64b9fee1eb71d6d5212935b
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Artem Sokolovskii
2024-01-08 11:26:44 +01:00
parent fcb752ff9c
commit 0618df9ea2
2 changed files with 24 additions and 22 deletions

View File

@@ -136,8 +136,12 @@ BaseSyntaxHighlighterRunner::BaseSyntaxHighlighterRunner(
BaseSyntaxHighlighterRunner::~BaseSyntaxHighlighterRunner() = default; BaseSyntaxHighlighterRunner::~BaseSyntaxHighlighterRunner() = default;
void BaseSyntaxHighlighterRunner::applyFormatRanges(const SyntaxHighlighter::Result &result) void BaseSyntaxHighlighterRunner::applyFormatRanges(const QList<SyntaxHighlighter::Result> &results)
{ {
if (m_document == nullptr)
return;
for (const SyntaxHighlighter::Result &result : results) {
m_syntaxInfoUpdated = result.m_state; m_syntaxInfoUpdated = result.m_state;
if (m_syntaxInfoUpdated == SyntaxHighlighter::State::Done) { if (m_syntaxInfoUpdated == SyntaxHighlighter::State::Done) {
emit highlightingFinished(); emit highlightingFinished();
@@ -158,6 +162,7 @@ void BaseSyntaxHighlighterRunner::applyFormatRanges(const SyntaxHighlighter::Res
foldValidator.process(docBlock); foldValidator.process(docBlock);
} }
} }
}
void BaseSyntaxHighlighterRunner::changeDocument(int from, int charsRemoved, int charsAdded) void BaseSyntaxHighlighterRunner::changeDocument(int from, int charsRemoved, int charsAdded)
{ {
@@ -249,11 +254,8 @@ ThreadedSyntaxHighlighterRunner::ThreadedSyntaxHighlighterRunner(SyntaxHighLight
m_document = document; m_document = document;
connect(d.get(), connect(d.get(),
&SyntaxHighlighterRunnerPrivate::resultsReady, &SyntaxHighlighterRunnerPrivate::resultsReady,
document, this,
[this](const QList<SyntaxHighlighter::Result> &result) { &ThreadedSyntaxHighlighterRunner::applyFormatRanges);
for (const SyntaxHighlighter::Result &res : result)
applyFormatRanges(res);
});
changeDocument(0, 0, document->characterCount()); changeDocument(0, 0, document->characterCount());
connect(document, connect(document,

View File

@@ -58,7 +58,7 @@ signals:
protected: protected:
std::unique_ptr<SyntaxHighlighterRunnerPrivate> d; std::unique_ptr<SyntaxHighlighterRunnerPrivate> d;
QPointer<QTextDocument> m_document = nullptr; QPointer<QTextDocument> m_document = nullptr;
void applyFormatRanges(const SyntaxHighlighter::Result &result); void applyFormatRanges(const QList<SyntaxHighlighter::Result> &results);
void changeDocument(int from, int charsRemoved, int charsAdded); void changeDocument(int from, int charsRemoved, int charsAdded);
SyntaxHighlighter::State m_syntaxInfoUpdated = SyntaxHighlighter::State::Done; SyntaxHighlighter::State m_syntaxInfoUpdated = SyntaxHighlighter::State::Done;