lineHeightMode(QSGText::ProportionalHeight), lineCount(1), maximumLineCount(INT_MAX),
maximumLineCountValid(false),
texture(0),
- imageCacheDirty(true), updateOnComponentComplete(true),
+ imageCacheDirty(false), updateOnComponentComplete(true),
richText(false), singleline(false), cacheAllTextAsImage(true), internalWidthUpdate(false),
requireImplicitWidth(false), truncated(false), hAlignImplicit(true), rightToLeftText(false),
- layoutTextElided(false), richTextAsImage(false), naturalWidth(0), doc(0), layoutThread(0),
- nodeType(NodeIsNull)
+ layoutTextElided(false), richTextAsImage(false), textureImageCacheDirty(false), naturalWidth(0),
+ doc(0), layoutThread(0), nodeType(NodeIsNull)
{
cacheAllTextAsImage = enableImageCache();
}
return;
imageCacheDirty = true;
- imageCache = QPixmap();
- }
- if (q->isComponentComplete())
+
+ if (q->isComponentComplete())
+ QCoreApplication::postEvent(q, new QEvent(QEvent::User));
+ } else if (q->isComponentComplete())
q->update();
}
*/
void QSGTextPrivate::checkImageCache()
{
+ Q_Q(QSGText);
+
if (!imageCacheDirty)
return;
}
imageCacheDirty = false;
+ textureImageCacheDirty = true;
+ q->update();
}
/*!
// XXX todo - some styled text can be done by the QSGTextNode
if (d->richTextAsImage || d->cacheAllTextAsImage || (!QSGDistanceFieldGlyphCache::distanceFieldEnabled() && d->style != Normal)) {
- bool wasDirty = d->imageCacheDirty;
-
- d->checkImageCache();
+ bool wasDirty = d->textureImageCacheDirty;
+ d->textureImageCacheDirty = false;
if (d->imageCache.isNull()) {
delete oldNode;
}
}
+bool QSGText::event(QEvent *e)
+{
+ Q_D(QSGText);
+ if (e->type() == QEvent::User) {
+ d->checkImageCache();
+ return true;
+ } else {
+ return QSGImplicitSizeItem::event(e);
+ }
+}
+
qreal QSGText::paintedWidth() const
{
Q_D(const QSGText);