QDoc: Generate correct relative paths and links when using -installdir.
authorCasper van Donderen <casper.vandonderen@nokia.com>
Wed, 16 May 2012 12:44:38 +0000 (14:44 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 16 May 2012 20:04:47 +0000 (22:04 +0200)
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 <martin.smith@nokia.com>
src/tools/qdoc/main.cpp
src/tools/qdoc/tree.cpp

index 2783cd0..bb0aa7e 100644 (file)
@@ -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<uint, QFileInfo> foundIndices;
                 for (int j = 0; j < indexDirs.size(); j++) {
index d0a2123..b600102 100644 (file)
@@ -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.