From 4b8ec5ffb79aa3010b1cd65f3a67a93381022021 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 2 Sep 2019 13:40:51 +0200 Subject: [PATCH] Help: Fix rendering images with litehtml Creating the document parses it, which also populates the pixmap cache, so we may not clear the pixmap cache afterwards. Change-Id: I1e6d1669db898b1e50d59d135e52807afb307d09 Reviewed-by: Cristian Adam Reviewed-by: hjk --- src/plugins/help/qlitehtml/container_qpainter.cpp | 4 ++-- src/plugins/help/qlitehtml/container_qpainter.h | 4 ++-- src/plugins/help/qlitehtml/qlitehtmlwidget.cpp | 5 +---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/plugins/help/qlitehtml/container_qpainter.cpp b/src/plugins/help/qlitehtml/container_qpainter.cpp index c99199881f2..b9752d272ed 100644 --- a/src/plugins/help/qlitehtml/container_qpainter.cpp +++ b/src/plugins/help/qlitehtml/container_qpainter.cpp @@ -848,11 +848,11 @@ void DocumentContainer::setScrollPosition(const QPoint &pos) m_scrollPosition = pos; } -void DocumentContainer::setDocument(litehtml::document::ptr document) +void DocumentContainer::setDocument(const QByteArray &data, litehtml::context *context) { - m_document = document; m_pixmaps.clear(); m_selection = {}; + m_document = litehtml::document::createFromUTF8(data.constData(), this, context); } litehtml::document::ptr DocumentContainer::document() const diff --git a/src/plugins/help/qlitehtml/container_qpainter.h b/src/plugins/help/qlitehtml/container_qpainter.h index 5d556e2c91d..58833bf8400 100644 --- a/src/plugins/help/qlitehtml/container_qpainter.h +++ b/src/plugins/help/qlitehtml/container_qpainter.h @@ -120,9 +120,9 @@ public: void get_media_features(litehtml::media_features &media) const override; void get_language(litehtml::tstring &language, litehtml::tstring &culture) const override; - void setScrollPosition(const QPoint &pos); - void setDocument(litehtml::document::ptr document); + void setDocument(const QByteArray &data, litehtml::context *context); litehtml::document::ptr document() const; + void setScrollPosition(const QPoint &pos); void render(int width, int height); // these return areas to redraw in document space diff --git a/src/plugins/help/qlitehtml/qlitehtmlwidget.cpp b/src/plugins/help/qlitehtml/qlitehtmlwidget.cpp index db29cd0ecb2..4b36b7bc04a 100644 --- a/src/plugins/help/qlitehtml/qlitehtmlwidget.cpp +++ b/src/plugins/help/qlitehtml/qlitehtmlwidget.cpp @@ -422,10 +422,7 @@ QUrl QLiteHtmlWidget::url() const void QLiteHtmlWidget::setHtml(const QString &content) { - litehtml::document::ptr doc = litehtml::document::createFromUTF8(content.toUtf8().constData(), - &d->documentContainer, - &d->context); - d->documentContainer.setDocument(doc); + d->documentContainer.setDocument(content.toUtf8(), &d->context); verticalScrollBar()->setValue(0); horizontalScrollBar()->setValue(0); render();