Help/litehtml: Fix selection drawing for CMake documentation

Don't rely on litehtml calling draw_background for the root element.
Manually draw selections first, then let litehtml draw as before.

Change-Id: Ic9efd11b564dec1742aa6b6ffcb58133504681ff
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Eike Ziller
2019-09-24 15:35:54 +02:00
parent b4928395d7
commit 2152d4750c
3 changed files with 10 additions and 9 deletions

View File

@@ -523,17 +523,11 @@ void QLiteHtmlWidget::paintEvent(QPaintEvent *event)
if (!d->documentContainer.document())
return;
d->documentContainer.setScrollPosition(scrollPosition());
const QPoint pos = -scrollPosition();
const QRect r = toVirtual(event->rect());
const litehtml::position clip = {r.x(), r.y(), r.width(), r.height()};
QPainter p(viewport());
p.setWorldTransform(QTransform().scale(d->zoomFactor, d->zoomFactor));
p.setRenderHint(QPainter::SmoothPixmapTransform, true);
p.setRenderHint(QPainter::Antialiasing, true);
d->documentContainer.document()->draw(reinterpret_cast<litehtml::uint_ptr>(&p),
pos.x(),
pos.y(),
&clip);
d->documentContainer.draw(&p, toVirtual(event->rect()));
}
static litehtml::element::ptr elementForY(int y, const litehtml::document::ptr &document)