From a772871a7112b897d3eacf1a86a8bc7824eda161 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Thu, 6 May 2021 16:30:24 +0200 Subject: TextEdit: update all glyphnodes on QTD::contentsChanged() signal When a syntax highlighter changes formatting, the actual text doesn't change, and QTextDocument emits contentsChanged() but not contentsChange(int, int, int). We need to regenerate QSG nodes. contentsChanged() is connected to QQuickTextControl::textChanged() and from there to QQuickTextEdit::q_textChanged(). Fixes: QTBUG-74572 Change-Id: Ia62aa6d3adfc9a9d496ee8811db4c2d963dd0c54 Reviewed-by: Allan Sandfeld Jensen (cherry picked from commit d0ffa3c42bb58eef0d2a2c3326984695a60e9667) Reviewed-by: Qt Cherry-pick Bot --- src/quick/items/qquicktextedit.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 0e62898d57..0aee8b2cb1 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -2359,6 +2359,14 @@ void QQuickTextEdit::q_textChanged() d->determineHorizontalAlignment(); d->updateDefaultTextOption(); updateSize(); + + markDirtyNodesForRange(0, d->document->characterCount(), 0); + polish(); + if (isComponentComplete()) { + d->updateType = QQuickTextEditPrivate::UpdatePaintNode; + update(); + } + emit textChanged(); } -- cgit v1.2.3