diff options
author | Sarunas Valaskevicius <rakatan@gmail.com> | 2014-02-09 18:50:42 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-05 12:39:13 +0200 |
commit | aa30ba3effca50bccb9df60a564f31afc689ca73 (patch) | |
tree | 53ab623328fd812e49929c2164ec7870fe9382f8 /src/quick/items/qquicktextedit.cpp | |
parent | b78372c4ba31da2d941d70ba23a927deae7d830c (diff) |
Invalidate text painting nodes when document text block is updated
The commit fixes text repainting when only formatting of the text is
changed by invalidating the affected blocks which will be repainted
on the next update.
Task-number: QTBUG-36743
Change-Id: I03ba747f9d08a9f49d0a012b8349c89c20dc6b55
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/quick/items/qquicktextedit.cpp')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index b69d8fa03b..3c4d0d4b42 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -2011,6 +2011,7 @@ void QQuickTextEditPrivate::init() qmlobject_connect(document, QQuickTextDocumentWithImageResources, SIGNAL(redoAvailable(bool)), q, QQuickTextEdit, SIGNAL(canRedoChanged())); qmlobject_connect(document, QQuickTextDocumentWithImageResources, SIGNAL(imagesLoaded()), q, QQuickTextEdit, SLOT(updateSize())); QObject::connect(document, &QQuickTextDocumentWithImageResources::contentsChange, q, &QQuickTextEdit::q_contentsChange); + QObject::connect(document->documentLayout(), &QAbstractTextDocumentLayout::updateBlock, q, &QQuickTextEdit::invalidateBlock); document->setDefaultFont(font); document->setDocumentMargin(textMargin); @@ -2245,6 +2246,11 @@ void QQuickTextEdit::updateWholeDocument() } } +void QQuickTextEdit::invalidateBlock(const QTextBlock &block) +{ + markDirtyNodesForRange(block.position(), block.position() + block.length(), 0); +} + void QQuickTextEdit::updateCursor() { Q_D(QQuickTextEdit); |