QDoc: Prefer class members in member doc links
An unqualified link in the documentation of a class or QML type
reaches a matching member of the type or its base types before a
keyword or target with the same name. The same link in a member's
documentation, its see-also list, or a comment shared by several
members doesn't. It goes to the global `\keyword` or `\target`
first, so a link to a sibling or inherited member lands on an
unrelated page whenever such a keyword exists. Target names are
compared without regard to case or punctuation. This means the link
can also land on a target that only resembles the name, such as a
section about a function when the author meant the class with the
same spelling.
This change makes QDoc treat member documentation as part of its
class or QML type, so it follows the same lookup order as the type's
own documentation. Links in member documentation reach the member the
author most likely meant, and a link resolves the same way wherever
it appears in the type's documentation. Links from ordinary pages,
and links to names that no member of the type has, still resolve to
the global keyword or target.
Task-number: QTBUG-72107
Task-number: QTBUG-141606
Fixes: QTBUG-151210
Pick-to: 6.12
Change-Id: I3145e1e8cfe2ca55807df779736fb8b725bca2d9
Reviewed-by: David Boddie <david.boddie@qt.io>
| commit | 03d589c93a8c0faa842c1683de5694cba11954d5 |
| parent | a9256721ff517996865252d6c08f775c09f9ee19 |
| author | Paul Wicking <paul.wicking@qt.io> |
| committer | Paul Wicking <paul.wicking@qt.io> |
| commit time | Wed, 7 Oct 2026 18:27:25 +0000 |
- M src/qdoc/qdoc/src/qdoc/tree.cpp
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/docbook/base.xml
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/docbook/controls.xml
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/docbook/derived.xml
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/docbook/keywords.xml
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/docbook/memberlinks-module.xml
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/docbook/memberlinksqml-qmlmodule.xml
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/docbook/qml-memberlinksqml-gadget.xml
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/base-members.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/base.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/controls.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/derived-members.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/derived.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/keywords.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/memberlinkhierarchy.index
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/memberlinks-module.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/memberlinksqml-qmlmodule.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/qml-memberlinksqml-gadget-members.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/expected/html/qml-memberlinksqml-gadget.html
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/member_link_hierarchy.qdocconf
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/src/gadget.qdoc
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/src/pages.qdoc
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/src/shapes.cpp
- A src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/member_link_hierarchy/src/shapes.h