aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktextedit.cpp
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@qt.io>2022-06-13 14:27:28 +0200
committerPaul Olav Tvete <paul.tvete@qt.io>2022-06-18 20:52:43 +0000
commit4197f3d9e60144737a4e4145cd221e47c2920ef9 (patch)
treeb46415e6322b3aabbef51191be063f0c064aa560 /src/quick/items/qquicktextedit.cpp
parent637b75279865ccdb7268a6524554ca584d1f7ef2 (diff)
Don't trigger update when text edit is hidden
At the same time clean up the logic around update/polish/ componentComplete. A polish() does trigger an update, so it should not happen before componentCompleted. Adding a polish call in componentCompleted makes sure we avoid the threading issues from QTBUG-38800 Fixes: QTBUG-99947 Pick-to: 6.4 Change-Id: I818168a90c1b05b7f77fa12de3dc5be3d89f133d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/quick/items/qquicktextedit.cpp')
-rw-r--r--src/quick/items/qquicktextedit.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp
index fa4fb71be1..ce3b4cbd89 100644
--- a/src/quick/items/qquicktextedit.cpp
+++ b/src/quick/items/qquicktextedit.cpp
@@ -1510,6 +1510,7 @@ void QQuickTextEdit::componentComplete()
}
if (d->cursorComponent && isCursorVisible())
QQuickTextUtil::createCursor(d);
+ polish();
}
/*!
@@ -2466,8 +2467,8 @@ void QQuickTextEdit::q_textChanged()
updateSize();
markDirtyNodesForRange(0, d->document->characterCount(), 0);
- polish();
if (isComponentComplete()) {
+ polish();
d->updateType = QQuickTextEditPrivate::UpdatePaintNode;
update();
}
@@ -2516,8 +2517,8 @@ void QQuickTextEdit::q_contentsChange(int pos, int charsRemoved, int charsAdded)
markDirtyNodesForRange(pos, editRange, delta);
- polish();
if (isComponentComplete()) {
+ polish();
d->updateType = QQuickTextEditPrivate::UpdatePaintNode;
update();
}
@@ -2545,8 +2546,8 @@ void QQuickTextEdit::updateSelection()
// No need for node updates when we go from an empty selection to another empty selection
if (d->control->textCursor().hasSelection() || d->hadSelection) {
markDirtyNodesForRange(qMin(d->lastSelectionStart, d->control->textCursor().selectionStart()), qMax(d->control->textCursor().selectionEnd(), d->lastSelectionEnd), 0);
- polish();
if (isComponentComplete()) {
+ polish();
d->updateType = QQuickTextEditPrivate::UpdatePaintNode;
update();
}
@@ -2690,8 +2691,8 @@ void QQuickTextEdit::updateWholeDocument()
node.setDirty();
}
- polish();
if (isComponentComplete()) {
+ polish();
d->updateType = QQuickTextEditPrivate::UpdatePaintNode;
update();
}
@@ -2702,8 +2703,8 @@ void QQuickTextEdit::invalidateBlock(const QTextBlock &block)
Q_D(QQuickTextEdit);
markDirtyNodesForRange(block.position(), block.position() + block.length(), 0);
- polish();
if (isComponentComplete()) {
+ polish();
d->updateType = QQuickTextEditPrivate::UpdatePaintNode;
update();
}
@@ -2712,8 +2713,8 @@ void QQuickTextEdit::invalidateBlock(const QTextBlock &block)
void QQuickTextEdit::updateCursor()
{
Q_D(QQuickTextEdit);
- polish();
- if (isComponentComplete()) {
+ if (isComponentComplete() && isVisible()) {
+ polish();
d->updateType = QQuickTextEditPrivate::UpdatePaintNode;
update();
}