diff --git a/src/libs/qtcreatorcdbext/containers.cpp b/src/libs/qtcreatorcdbext/containers.cpp index f2cde38d4d62641511a1e3e9a2ad66246cc130ab..ed7d13d837df57ca93cd1a344aa749c1981346be 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 6f3e902a898f4cbfd51cec5c66acef5e88266b09..a4f39dd41f4ae6104fa4a39894e89ffb83af7bb7 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 3fbbedd7ea6a872a1b14820e8565fa3131435ac2..9d49869dbabebc284f719a8c5de45d9d37fb1586 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();