Don't freeze when pasting large markdown documents

BUG: 460802
This commit is contained in:
Tobias Fella
2022-10-23 20:51:08 +02:00
parent a9c80b90f6
commit 510c6d4a90

View File

@@ -10,6 +10,7 @@
#include <QSyntaxHighlighter>
#include <QTextBlock>
#include <QTextDocument>
#include <QTimer>
#include <Sonnet/BackgroundChecker>
#include <Sonnet/Settings>
@@ -28,6 +29,7 @@ public:
Sonnet::Settings settings;
QList<QPair<int, QString>> errors;
QString previousText;
QTimer rehighlightTimer;
SyntaxHighlighter(QObject *parent)
: QSyntaxHighlighter(parent)
{
@@ -39,9 +41,14 @@ public:
connect(checker, &Sonnet::BackgroundChecker::misspelling, this, [this](const QString &word, int start) {
errors += {start, word};
rehighlight();
checker->continueChecking();
});
connect(checker, &Sonnet::BackgroundChecker::done, this, [this]() {
rehighlightTimer.start();
});
rehighlightTimer.setInterval(100);
rehighlightTimer.setSingleShot(true);
rehighlightTimer.callOnTimeout(this, &QSyntaxHighlighter::rehighlight);
}
void highlightBlock(const QString &text) override
{