diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2011-11-24 13:48:19 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-24 13:03:03 +0100 |
commit | 47a5c708bf4e555cb8febef583f32c99f7d8ea1e (patch) | |
tree | 722842be890fe711a353759b100ac50bef9c2648 /src/quick/items/qquicktextedit.cpp | |
parent | 635d0a7cf6601b2e46e0eed21a648934bc471c6d (diff) |
Add support for shared glyph cache
Use a shared graphics cache to back the distance fields if
it is available.
Change-Id: Id5e6e7a28e38e349d787e66016b2d0faebc791d7
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Diffstat (limited to 'src/quick/items/qquicktextedit.cpp')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 9daead9ea7..37c76c09a3 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -1609,11 +1609,27 @@ void QQuickTextEdit::updateImageCache(const QRectF &) } +void QQuickTextEdit::triggerPreprocess() +{ + Q_D(QQuickTextEdit); + if (d->updateType == QQuickTextEditPrivate::UpdateNone) + d->updateType = QQuickTextEditPrivate::UpdateOnlyPreprocess; + update(); +} + QSGNode *QQuickTextEdit::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData) { Q_UNUSED(updatePaintNodeData); Q_D(QQuickTextEdit); + if (d->updateType != QQuickTextEditPrivate::UpdatePaintNode && oldNode != 0) { + // Update done in preprocess() in the nodes + d->updateType = QQuickTextEditPrivate::UpdateNone; + return oldNode; + } + + d->updateType = QQuickTextEditPrivate::UpdateNone; + QSGNode *currentNode = oldNode; if (d->richText && d->useImageFallback) { QSGImageNode *node = 0; @@ -1651,7 +1667,7 @@ QSGNode *QQuickTextEdit::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData * QQuickTextNode *node = 0; if (oldNode == 0 || d->nodeType != QQuickTextEditPrivate::NodeIsText) { delete oldNode; - node = new QQuickTextNode(QQuickItemPrivate::get(this)->sceneGraphContext()); + node = new QQuickTextNode(QQuickItemPrivate::get(this)->sceneGraphContext(), this); d->nodeType = QQuickTextEditPrivate::NodeIsText; currentNode = node; } else { @@ -1962,6 +1978,7 @@ void QQuickTextEdit::updateDocument() if (isComponentComplete()) { updateImageCache(); + d->updateType = QQuickTextEditPrivate::UpdatePaintNode; update(); } } @@ -1971,6 +1988,7 @@ void QQuickTextEdit::updateCursor() Q_D(QQuickTextEdit); if (isComponentComplete()) { updateImageCache(d->control->cursorRect()); + d->updateType = QQuickTextEditPrivate::UpdatePaintNode; update(); } } |