qdoc: Allow QML linking without version nr
This change allows links of the form:
\l{qml-module-name::qml-type}{name}
i.e. no version number provided.
This change does not handle collisions.
There aren't any in Qt5 at the moment.
If a collision occurs, qdoc will link to
the name in one of the colliding QML
modules, but not necessarily the most
recent one. Hence, the link may go to
the wrong page. A further update might
be forthcoming that will handle this
better.
Task-number: QTBUG-29778
Change-Id: Ie2c2b117446ed02852593dd0273c390d39fed927
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
bb10
parent
7ed41b0e54
commit
c0c38912eb
|
|
@ -291,29 +291,29 @@ DocNode* QDocDatabase::addToModule(const QString& name, Node* node)
|
|||
*/
|
||||
DocNode* QDocDatabase::addToQmlModule(const QString& name, Node* node)
|
||||
{
|
||||
QString longQmid, shortQmid;
|
||||
QStringList qmid;
|
||||
QStringList dotSplit;
|
||||
QStringList blankSplit = name.split(QLatin1Char(' '));
|
||||
qmid.append(blankSplit[0]);
|
||||
if (blankSplit.size() > 1) {
|
||||
longQmid = blankSplit[0] + blankSplit[1];
|
||||
qmid.append(blankSplit[0] + blankSplit[1]);
|
||||
dotSplit = blankSplit[1].split(QLatin1Char('.'));
|
||||
shortQmid = blankSplit[0] + dotSplit[0];
|
||||
qmid.append(blankSplit[0] + dotSplit[0]);
|
||||
}
|
||||
DocNode* dn = findQmlModule(name);
|
||||
dn->addMember(node);
|
||||
node->setQmlModuleInfo(name);
|
||||
if (node->subType() == Node::QmlClass) {
|
||||
QmlClassNode* n = static_cast<QmlClassNode*>(node);
|
||||
QString key = longQmid + "::" + node->name();
|
||||
for (int i=0; i<2; ++i) {
|
||||
for (int i=0; i<qmid.size(); ++i) {
|
||||
QString key = qmid[i] + "::" + node->name();
|
||||
if (!qmlTypeMap_.contains(key))
|
||||
qmlTypeMap_.insert(key,n);
|
||||
if (!masterMap_.contains(key))
|
||||
masterMap_.insert(key,node);
|
||||
if (!masterMap_.contains(node->name(),node))
|
||||
masterMap_.insert(node->name(),node);
|
||||
key = shortQmid + "::" + node->name();
|
||||
}
|
||||
if (!masterMap_.contains(node->name(),node))
|
||||
masterMap_.insert(node->name(),node);
|
||||
}
|
||||
return dn;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue