diff options
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/qquicktext.cpp | 27 | ||||
-rw-r--r-- | src/quick/items/qquicktext_p_p.h | 9 | ||||
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 4 |
3 files changed, 13 insertions, 27 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index 9d11bfb4ea..9c153febb6 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -115,6 +115,7 @@ QQuickTextDocumentWithImageResources::QQuickTextDocumentWithImageResources(QQuic { setUndoRedoEnabled(false); documentLayout()->registerHandler(QTextFormat::ImageObject, this); + connect(this, SIGNAL(baseUrlChanged(QUrl)), this, SLOT(reset())); } QQuickTextDocumentWithImageResources::~QQuickTextDocumentWithImageResources() @@ -126,14 +127,13 @@ QQuickTextDocumentWithImageResources::~QQuickTextDocumentWithImageResources() QVariant QQuickTextDocumentWithImageResources::loadResource(int type, const QUrl &name) { QQmlContext *context = qmlContext(parent()); - QUrl url = m_baseUrl.resolved(name); if (type == QTextDocument::ImageResource) { - QQuickPixmap *p = loadPixmap(context, url); + QQuickPixmap *p = loadPixmap(context, name); return p->image(); } - return QTextDocument::loadResource(type,url); // The *resolved* URL + return QTextDocument::loadResource(type, name); } void QQuickTextDocumentWithImageResources::requestFinished() @@ -145,14 +145,6 @@ void QQuickTextDocumentWithImageResources::requestFinished() } } -void QQuickTextDocumentWithImageResources::clear() -{ - clearResources(); - - QTextDocument::clear(); -} - - QSizeF QQuickTextDocumentWithImageResources::intrinsicSize( QTextDocument *, int, const QTextFormat &format) { @@ -167,7 +159,7 @@ QSizeF QQuickTextDocumentWithImageResources::intrinsicSize( QSizeF size(width, height); if (!hasWidth || !hasHeight) { QQmlContext *context = qmlContext(parent()); - QUrl url = m_baseUrl.resolved(QUrl(imageFormat.name())); + QUrl url = baseUrl().resolved(QUrl(imageFormat.name())); QQuickPixmap *p = loadPixmap(context, url); if (!p->isReady()) { @@ -205,19 +197,16 @@ void QQuickTextDocumentWithImageResources::drawObject( QImage QQuickTextDocumentWithImageResources::image(const QTextImageFormat &format) { QQmlContext *context = qmlContext(parent()); - QUrl url = m_baseUrl.resolved(QUrl(format.name())); + QUrl url = baseUrl().resolved(QUrl(format.name())); QQuickPixmap *p = loadPixmap(context, url); return p->image(); } -void QQuickTextDocumentWithImageResources::setBaseUrl(const QUrl &url, bool clear) +void QQuickTextDocumentWithImageResources::reset() { - m_baseUrl = url; - if (clear) { - clearResources(); - markContentsDirty(0, characterCount()); - } + clearResources(); + markContentsDirty(0, characterCount()); } QQuickPixmap *QQuickTextDocumentWithImageResources::loadPixmap( diff --git a/src/quick/items/qquicktext_p_p.h b/src/quick/items/qquicktext_p_p.h index 1f6cd3eab5..12113f416c 100644 --- a/src/quick/items/qquicktext_p_p.h +++ b/src/quick/items/qquicktext_p_p.h @@ -195,16 +195,13 @@ public: void setText(const QString &); int resourcesLoading() const { return outstanding; } - void clearResources(); - - void clear(); - QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format); void drawObject(QPainter *p, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format); QImage image(const QTextImageFormat &format); - void setBaseUrl(const QUrl &url, bool clear = true); +public Q_SLOTS: + void clearResources(); Q_SIGNALS: void imagesLoaded(); @@ -215,11 +212,11 @@ protected: QQuickPixmap *loadPixmap(QQmlContext *context, const QUrl &name); private Q_SLOTS: + void reset(); void requestFinished(); private: QHash<QUrl, QQuickPixmap *> m_resources; - QUrl m_baseUrl; int outstanding; static QSet<QUrl> errors; diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index ffc732621d..c342c79ce5 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -830,7 +830,7 @@ void QQuickTextEdit::setBaseUrl(const QUrl &url) if (baseUrl() != url) { d->baseUrl = url; - d->document->setBaseUrl(url, d->richText); + d->document->setBaseUrl(url); emit baseUrlChanged(); } } @@ -1281,7 +1281,7 @@ void QQuickTextEdit::componentComplete() Q_D(QQuickTextEdit); QQuickImplicitSizeItem::componentComplete(); - d->document->setBaseUrl(baseUrl(), d->richText); + d->document->setBaseUrl(baseUrl()); #ifndef QT_NO_TEXTHTML_PARSER if (d->richText) d->control->setHtml(d->text); |