From 537eb2f159cd894d3f2dde4261ade44e9c0ac3d8 Mon Sep 17 00:00:00 2001
From: David Schulz <david.schulz@theqtcompany.com>
Date: Wed, 12 Aug 2015 11:12:50 +0200
Subject: [PATCH] Cdbext: Do not sort container children.

They are already sorted in an intended order.

Task-number: QTCREATORBUG-14872
Change-Id: If28d41eb220cb875fa5ef25f0fab075329900bff
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
---
 src/libs/qtcreatorcdbext/containers.cpp      | 1 +
 src/libs/qtcreatorcdbext/symbolgroupnode.cpp | 2 +-
 src/libs/qtcreatorcdbext/symbolgroupnode.h   | 3 ++-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/libs/qtcreatorcdbext/containers.cpp b/src/libs/qtcreatorcdbext/containers.cpp
index f2cde38d4d6..ed7d13d837d 100644
--- a/src/libs/qtcreatorcdbext/containers.cpp
+++ b/src/libs/qtcreatorcdbext/containers.cpp
@@ -1104,6 +1104,7 @@ AbstractSymbolGroupNodePtrVector containerChildren(SymbolGroupNode *node, int ty
     }
     if (!size)
         return AbstractSymbolGroupNodePtrVector();
+    node->addFlags(SymbolGroupNode::PreSortedChildren);
     const unsigned maxArraySize = ExtensionContext::instance().parameters().maxArraySize;
     if (size > maxArraySize)
         size = maxArraySize;
diff --git a/src/libs/qtcreatorcdbext/symbolgroupnode.cpp b/src/libs/qtcreatorcdbext/symbolgroupnode.cpp
index 6f3e902a898..a4f39dd41f4 100644
--- a/src/libs/qtcreatorcdbext/symbolgroupnode.cpp
+++ b/src/libs/qtcreatorcdbext/symbolgroupnode.cpp
@@ -168,7 +168,7 @@ bool AbstractSymbolGroupNode::accept(SymbolGroupNodeVisitor &visitor,
         break;
     case SymbolGroupNodeVisitor::VisitContinue: {
         AbstractSymbolGroupNodePtrVector c = children();
-        if (visitor.sortChildrenAlphabetically()) {
+        if (visitor.sortChildrenAlphabetically() && !testFlags(SymbolGroupNode::PreSortedChildren)) {
             std::sort(c.begin(), c.end(), [](AbstractSymbolGroupNode *a, AbstractSymbolGroupNode *b) {
                 return a->name() < b->name();
             });
diff --git a/src/libs/qtcreatorcdbext/symbolgroupnode.h b/src/libs/qtcreatorcdbext/symbolgroupnode.h
index 3fbbedd7ea6..9d49869dbab 100644
--- a/src/libs/qtcreatorcdbext/symbolgroupnode.h
+++ b/src/libs/qtcreatorcdbext/symbolgroupnode.h
@@ -230,7 +230,8 @@ public:
         AdditionalSymbol = 0x20, // Introduced by addSymbol, should not be visible
         Obscured = 0x40,    // Symbol is obscured by (for example) fake container children
         ComplexDumperOk = 0x80,
-        WatchNode = 0x100
+        WatchNode = 0x100,
+        PreSortedChildren = 0x200
     };
 
     ~SymbolGroupNode();
-- 
GitLab