From 510c6d4a908410fc4ae2042589daa328f07c36c8 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Sun, 23 Oct 2022 20:51:08 +0200 Subject: [PATCH] Don't freeze when pasting large markdown documents BUG: 460802 --- src/chatdocumenthandler.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/chatdocumenthandler.cpp b/src/chatdocumenthandler.cpp index 460348866..472ee6beb 100644 --- a/src/chatdocumenthandler.cpp +++ b/src/chatdocumenthandler.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -28,6 +29,7 @@ public: Sonnet::Settings settings; QList> 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 {