summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-09-08 05:27:08 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-09-08 05:27:08 (GMT)
commitaafc407fc3efaf6a7ee8f96623fc59857c7bc2a8 (patch)
treeb547124820ce5f893d67fa2015db56e923d4cbea /src/declarative
parent56776c574a4af02cfa529095a757b80adfb7d189 (diff)
downloadQt-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.cpp16
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) {