From 438787b0ca18b08993bfa640ddf0ad5e6d2340e8 Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Wed, 16 May 2012 14:44:38 +0200 Subject: QDoc: Generate correct relative paths and links when using -installdir. This change will generate working links between all modules in qtbase. Some testing needs to be done on the other modules. Change-Id: Ic65a9c753f891ac51427ca7c1cdcab13611d2f5b Reviewed-by: Martin Smith --- src/tools/qdoc/main.cpp | 5 +++++ src/tools/qdoc/tree.cpp | 10 ++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/tools/qdoc/main.cpp b/src/tools/qdoc/main.cpp index 2783cd0027..bb0aa7e811 100644 --- a/src/tools/qdoc/main.cpp +++ b/src/tools/qdoc/main.cpp @@ -254,6 +254,11 @@ static void processQdocconfFile(const QString &fileName) if (dependModules.size() > 0) { if (indexDirs.size() > 0) { + for (int j = 0; j < indexDirs.size(); j++) { + if (indexDirs[j].startsWith("..")) { + indexDirs[j].prepend(QDir(dir).relativeFilePath(prevCurrentDir)); + } + } for (int i = 0; i < dependModules.size(); i++) { QMultiMap foundIndices; for (int j = 0; j < indexDirs.size(); j++) { diff --git a/src/tools/qdoc/tree.cpp b/src/tools/qdoc/tree.cpp index d0a2123ff5..b600102c41 100644 --- a/src/tools/qdoc/tree.cpp +++ b/src/tools/qdoc/tree.cpp @@ -946,7 +946,9 @@ void Tree::readIndexFile(const QString& path) indexUrl = indexElement.attribute("url", ""); } else { - QDir installDir(Config::installDir); + // Use a fake directory, since we will copy the output to a sub directory of + // installDir when using "make install". This is just for a proper relative path. + QDir installDir(Config::installDir + "/outputdir"); indexUrl = installDir.relativeFilePath(path).section('/', 0, -2); } @@ -1001,7 +1003,6 @@ void Tree::readIndexSection(const QDomElement& element, location = Location(indexUrl + QLatin1Char('/') + name.toLower() + ".html"); else if (!indexUrl.isNull()) location = Location(name.toLower() + ".html"); - } else if ((element.nodeName() == "qmlclass") || ((element.nodeName() == "page") && (element.attribute("subtype") == "qmlclass"))) { @@ -1275,10 +1276,7 @@ void Tree::readIndexSection(const QDomElement& element, section->setModuleName(element.attribute("module")); if (!indexUrl.isEmpty()) { - if (indexUrl.startsWith(QLatin1Char('.'))) - section->setUrl(href); - else - section->setUrl(indexUrl + QLatin1Char('/') + href); + section->setUrl(indexUrl + QLatin1Char('/') + href); } // Create some content for the node. -- cgit v1.2.3