diff options
author | Roman Pasechnik <roman@pasechnik.net> | 2015-04-11 12:49:56 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-10-15 11:29:30 +0000 |
commit | b63185824ea213c2d19472fee302f007151dd5ca (patch) | |
tree | 043683711ddfc7d31cda88afdb7b39cb0401dc9a /src/quick/items/qquicktext.cpp | |
parent | c161a413ffeed9f7584adc26a727ddcdf06f8c33 (diff) |
Fix QQuickTextDocumentWithImageResources image loading
QQuickTextDocumentWithImageResources always tries to load images itself
and not using QTextDocument internal resources. What it should do:
1) Check if QTextDocument already has image resource and use it.
2) If not, try to load resource manually.
Change-Id: Ifc4d919fc4a08b4efae50e06a42f1af7cee67af3
Task-number: QTBUG-32525
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Diffstat (limited to 'src/quick/items/qquicktext.cpp')
-rw-r--r-- | src/quick/items/qquicktext.cpp | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index 205571f2e7..f848d0baee 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -120,14 +120,15 @@ QQuickTextDocumentWithImageResources::~QQuickTextDocumentWithImageResources() QVariant QQuickTextDocumentWithImageResources::loadResource(int type, const QUrl &name) { - QQmlContext *context = qmlContext(parent()); - - if (type == QTextDocument::ImageResource) { - QQuickPixmap *p = loadPixmap(context, name); - return p->image(); + QVariant resource = QTextDocument::loadResource(type, name); + if (resource.isNull() && type == QTextDocument::ImageResource) { + QQmlContext *context = qmlContext(parent()); + QUrl url = baseUrl().resolved(name); + QQuickPixmap *p = loadPixmap(context, url); + resource = p->image(); } - return QTextDocument::loadResource(type, name); + return resource; } void QQuickTextDocumentWithImageResources::requestFinished() @@ -152,30 +153,28 @@ QSizeF QQuickTextDocumentWithImageResources::intrinsicSize( QSizeF size(width, height); if (!hasWidth || !hasHeight) { - QQmlContext *context = qmlContext(parent()); - QUrl url = baseUrl().resolved(QUrl(imageFormat.name())); - - QQuickPixmap *p = loadPixmap(context, url); - if (!p->isReady()) { + QVariant res = resource(QTextDocument::ImageResource, QUrl(imageFormat.name())); + QImage image = res.value<QImage>(); + if (image.isNull()) { if (!hasWidth) size.setWidth(16); if (!hasHeight) size.setHeight(16); return size; } - QSize implicitSize = p->implicitSize(); + QSize imgSize = image.size(); if (!hasWidth) { if (!hasHeight) - size.setWidth(implicitSize.width()); + size.setWidth(imgSize.width()); else - size.setWidth(qRound(height * (implicitSize.width() / (qreal) implicitSize.height()))); + size.setWidth(qRound(height * (imgSize.width() / (qreal) imgSize.height()))); } if (!hasHeight) { if (!hasWidth) - size.setHeight(implicitSize.height()); + size.setHeight(imgSize.height()); else - size.setHeight(qRound(width * (implicitSize.height() / (qreal) implicitSize.width()))); + size.setHeight(qRound(width * (imgSize.height() / (qreal) imgSize.width()))); } } return size; @@ -190,11 +189,8 @@ void QQuickTextDocumentWithImageResources::drawObject( QImage QQuickTextDocumentWithImageResources::image(const QTextImageFormat &format) { - QQmlContext *context = qmlContext(parent()); - QUrl url = baseUrl().resolved(QUrl(format.name())); - - QQuickPixmap *p = loadPixmap(context, url); - return p->image(); + QVariant res = resource(QTextDocument::ImageResource, QUrl(format.name())); + return res.value<QImage>(); } void QQuickTextDocumentWithImageResources::reset() |