diff --git a/src/tools/qdoc/node.cpp b/src/tools/qdoc/node.cpp index 1ed6820fbf4..2e9e7e76be6 100644 --- a/src/tools/qdoc/node.cpp +++ b/src/tools/qdoc/node.cpp @@ -817,7 +817,7 @@ FunctionNode *Aggregate::findFunctionNode(const QString& name, const QString& pa FunctionNode* fn = pfn; if (fn) { const QVector* funcParams = &(fn->parameters()); - if (params.isEmpty() && funcParams->isEmpty()) + if (params.isEmpty() && funcParams->isEmpty() && !fn->isInternal()) return fn; bool isQPrivateSignal = false; // Not used in the search QVector testParams; @@ -829,7 +829,7 @@ FunctionNode *Aggregate::findFunctionNode(const QString& name, const QString& pa int i = -1; while (fn) { if (testParams.size() == funcParams->size()) { - if (testParams.isEmpty()) + if (testParams.isEmpty() && !fn->isInternal()) return fn; bool different = false; for (int j=0; jisInternal()) return fn; } if (++i < funcs.size()) { @@ -848,19 +848,30 @@ FunctionNode *Aggregate::findFunctionNode(const QString& name, const QString& pa else fn = 0; } - if (!fn && !testParams.empty()) - return 0; + /* + Most \l commands that link to functions don't include + the parameter declarations in the function signature, + so if the \l is meant to go to a function that does + have parameters, the algorithm above won't find it. + Therefore we must return the pointer to the function + in the primary function map in the cases where the + parameters should have been specified in the \l command. + But if the primary function is marked internal, search + the secondary list to find one that is not marked internal. + */ + if (!fn) { + if (!testParams.empty()) + return 0; + if (pfn && !pfn->isInternal()) + return pfn; + foreach (Node* n, funcs) { + fn = static_cast(n); + if (!fn->isInternal()) + return fn; + } + } } - /* - Most \l commands that link to functions don't include - the parameter declarations in the function signature, - so if the \l is meant to go to a function that does - have parameters, the algorithm above won't find it. - Therefore we must return the pointer to the function - in the primary function map in the cases where the - parameters should have been specified in the \l command. - */ - return (fn ? fn : pfn); + return fn; } /*! diff --git a/src/tools/qdoc/qdocdatabase.cpp b/src/tools/qdoc/qdocdatabase.cpp index 7f2e64b00c7..aef785f30e6 100644 --- a/src/tools/qdoc/qdocdatabase.cpp +++ b/src/tools/qdoc/qdocdatabase.cpp @@ -1673,8 +1673,6 @@ const Node* QDocDatabase::findNodeForAtom(const Atom* a, const Node* relative, Q Atom* atom = const_cast(a); QStringList targetPath = atom->string().split("#"); QString first = targetPath.first().trimmed(); - if (Generator::debugging()) - qDebug() << " first:" << first; Tree* domain = 0; Node::Genus genus = Node::DontCare; @@ -1725,8 +1723,6 @@ const Node* QDocDatabase::findNodeForAtom(const Atom* a, const Node* relative, Q } else if (first.endsWith(QChar(')'))) { node = findFunctionNode(first, relative, genus); - if (Generator::debugging()) - qDebug() << " node:" << node; } else { node = findNodeForTarget(targetPath, relative, genus, ref);