From 612ccb011671ff2767d2e5b7b8151b39be7c15ad Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 15 Nov 2016 13:13:29 +0100 Subject: Fix sorting of generatelist So far the attributions where sorted first for target names (Node::name()), not by the text displayed. Fix this by first doing comparisons based on fullTitle. Also fix the same logic for function lists. Change-Id: Id11f96355665b1aae0499ce2dd0d876d698b10c9 Reviewed-by: Martin Smith --- src/qdoc/node.cpp | 65 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/qdoc/node.cpp b/src/qdoc/node.cpp index 7bec46843..2babb94ab 100644 --- a/src/qdoc/node.cpp +++ b/src/qdoc/node.cpp @@ -75,6 +75,39 @@ void Node::initialize() bool Node::nodeNameLessThan(const Node *n1, const Node *n2) { + if (n1->isDocumentNode() && n2->isDocumentNode()) { + const DocumentNode* f1 = static_cast(n1); + const DocumentNode* f2 = static_cast(n2); + if (f1->fullTitle() < f2->fullTitle()) + return true; + else if (f1->fullTitle() > f2->fullTitle()) + return false; + } + + if (n1->isCollectionNode() && n2->isCollectionNode()) { + const CollectionNode* f1 = static_cast(n1); + const CollectionNode* f2 = static_cast(n2); + if (f1->fullTitle() < f2->fullTitle()) + return true; + else if (f1->fullTitle() > f2->fullTitle()) + return false; + } + + if (n1->type() == Node::Function && n2->type() == Node::Function) { + const FunctionNode* f1 = static_cast(n1); + const FunctionNode* f2 = static_cast(n2); + + if (f1->isConst() < f2->isConst()) + return true; + else if (f1->isConst() > f2->isConst()) + return false; + + if (f1->signature(false) < f2->signature(false)) + return true; + else if (f1->signature(false) > f2->signature(false)) + return false; + } + if (n1->location().filePath() < n2->location().filePath()) return true; else if (n1->location().filePath() > n2->location().filePath()) @@ -95,38 +128,6 @@ bool Node::nodeNameLessThan(const Node *n1, const Node *n2) else if (n1->access() > n2->access()) return false; - if (n1->type() == Node::Function && n2->type() == Node::Function) { - const FunctionNode* f1 = static_cast(n1); - const FunctionNode* f2 = static_cast(n2); - - if (f1->isConst() < f2->isConst()) - return true; - else if (f1->isConst() > f2->isConst()) - return false; - - if (f1->signature(false) < f2->signature(false)) - return true; - else if (f1->signature(false) > f2->signature(false)) - return false; - } - - if (n1->isDocumentNode() && n2->isDocumentNode()) { - const DocumentNode* f1 = static_cast(n1); - const DocumentNode* f2 = static_cast(n2); - if (f1->fullTitle() < f2->fullTitle()) - return true; - else if (f1->fullTitle() > f2->fullTitle()) - return false; - } - else if (n1->isCollectionNode() && n2->isCollectionNode()) { - const CollectionNode* f1 = static_cast(n1); - const CollectionNode* f2 = static_cast(n2); - if (f1->fullTitle() < f2->fullTitle()) - return true; - else if (f1->fullTitle() > f2->fullTitle()) - return false; - } - return false; } -- cgit v1.2.3