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>
This commit is contained in:
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…
x
Reference in New Issue
Block a user