diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-09-08 05:27:08 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-09-08 05:27:08 (GMT) |
commit | aafc407fc3efaf6a7ee8f96623fc59857c7bc2a8 (patch) | |
tree | b547124820ce5f893d67fa2015db56e923d4cbea /src/declarative | |
parent | 56776c574a4af02cfa529095a757b80adfb7d189 (diff) | |
download | Qt-aafc407fc3efaf6a7ee8f96623fc59857c7bc2a8.zip Qt-aafc407fc3efaf6a7ee8f96623fc59857c7bc2a8.tar.gz Qt-aafc407fc3efaf6a7ee8f96623fc59857c7bc2a8.tar.bz2 |
Don't cause repaints during painting in Text element
Calling prepareGeometryChange in a paint event is a bad idea and was
causing jerky scrolling. There is no longer any need for the removed
code since we don't use imgCache.size() to determine boundingRect()
anymore.
Task-number: QTBUG-13453
Reviewed-by: Joona Petrell
Diffstat (limited to 'src/declarative')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativetext.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index fd3a1f7..14194a0 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -429,6 +429,9 @@ void QDeclarativeText::setStyle(QDeclarativeText::TextStyle style) if (d->style == style) return; + // changing to/from Normal requires the boundingRect() to change + if (isComponentComplete() && (d->style == Normal || style == Normal)) + prepareGeometryChange(); d->style = style; d->markImgDirty(); emit styleChanged(d->style); @@ -494,8 +497,9 @@ void QDeclarativeText::setHAlign(HAlignment align) if (d->hAlign == align) return; + if (isComponentComplete()) + prepareGeometryChange(); d->hAlign = align; - update(); emit horizontalAlignmentChanged(align); } @@ -511,8 +515,9 @@ void QDeclarativeText::setVAlign(VAlignment align) if (d->vAlign == align) return; + if (isComponentComplete()) + prepareGeometryChange(); d->vAlign = align; - update(); emit verticalAlignmentChanged(align); } @@ -805,7 +810,6 @@ void QDeclarativeTextPrivate::updateSize() else doc->setTextWidth(doc->idealWidth()); // ### Text does not align if width is not set (QTextDoc bug) dy -= (int)doc->size().height(); - q->prepareGeometryChange(); QSize dsize = doc->size().toSize(); if (dsize != cachedLayoutSize) { q->prepareGeometryChange(); @@ -882,8 +886,6 @@ void QDeclarativeTextPrivate::drawOutline() ppm.drawPixmap(pos, imgCache); ppm.end(); - if (imgCache.size() != img.size()) - q_func()->prepareGeometryChange(); imgCache = img; } @@ -902,8 +904,6 @@ void QDeclarativeTextPrivate::drawOutline(int yOffset) ppm.drawPixmap(pos, imgCache); ppm.end(); - if (imgCache.size() != img.size()) - q_func()->prepareGeometryChange(); imgCache = img; } @@ -1054,8 +1054,6 @@ void QDeclarativeTextPrivate::checkImgCache() if (style != QDeclarativeText::Normal) imgStyleCache = wrappedTextImage(true); //### should use styleColor } - if (imgCache.size() != newImgCache.size()) - q_func()->prepareGeometryChange(); imgCache = newImgCache; if (!empty) switch (style) { |