aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2024-04-08 08:40:42 +0200
committerEike Ziller <eike.ziller@qt.io>2024-04-10 06:18:45 +0000
commit4f737256c0a698ff3ba380cbaef1ba80a16fc3a8 (patch)
treec2e9620a57ace93df474722a34ee3b0a746fd349
parent9c7b5d073bf4713250648cf7ea35580f489f7fd7 (diff)
Help: Fix jumping to anchors on elements that are not renderedHEADmaster
themselves. litehtml v0.9 returns a placement of 0 for elements that don't have a renderer. Technically speaking that might even be correct, because these elements are not "placed". Search for a parent that does provide a placement. This fixes jumping to QML properties in the QML documentation. Task-number: QTCREATORBUG-30625 Change-Id: I1deb01d4e884ca39689f1444174ded0ceeb7cac6 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r--src/container_qpainter.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/container_qpainter.cpp b/src/container_qpainter.cpp
index 7eb7285..ce5ade2 100644
--- a/src/container_qpainter.cpp
+++ b/src/container_qpainter.cpp
@@ -995,9 +995,14 @@ int DocumentContainer::anchorY(const QString &anchorName) const
if (!element) {
element = d->m_document->root()->select_one(QString("[name=%1]").arg(anchorName).toStdString());
}
- if (element)
- return element->get_placement().y;
- return -1;
+ if (!element)
+ return -1;
+ while (element) {
+ if (element->get_placement().y > 0)
+ return element->get_placement().y;
+ element = element->parent();
+ }
+ return 0;
}
QVector<QRect> DocumentContainer::mousePressEvent(const QPoint &documentPos,