From ab52154010a3b4f15fa7df355ee2239c0b8bf35a Mon Sep 17 00:00:00 2001 From: hjk <hjk121@nokiamail.com> Date: Sun, 17 Nov 2013 20:09:26 +0100 Subject: [PATCH] Debugger: Use natural order when displaying a map Task-number: QTCREATORBUG-10781 Change-Id: I20e6ee87efd445a32539f6600fa90a5192c72114 Reviewed-by: Eike Ziller <eike.ziller@digia.com> --- share/qtcreator/debugger/qttypes.py | 52 ++++++++++++++--------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 8ee8c2560ad..3bd07d5506e 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -920,38 +920,36 @@ def qdumpHelper__Qt5_QMap(d, value, forceLong): else: innerType = nodeType - with Children(d, n, childType=innerType): - toDo = [] - i = -1 - node = d_ptr["header"] + + def helper(d, node, nodeType, isCompact, forceLong, i): left = node["left"] if not d.isNull(left): - toDo.append(left.dereference()) + i = helper(d, left.dereference(), nodeType, isCompact, forceLong, i) + + nodex = node.cast(nodeType) + with SubItem(d, i): + d.putField("iname", d.currentIName) + if isCompact: + if forceLong: + d.putName("[%s] %s" % (i, nodex["key"])) + else: + d.putMapName(nodex["key"]) + d.putItem(nodex["value"]) + else: + qdump__QMapNode(d, nodex) + + i += 1 + right = node["right"] if not d.isNull(right): - toDo.append(right.dereference()) - - while len(toDo): - node = toDo[0].cast(nodeType) - toDo = toDo[1:] - left = node["left"] - if not d.isNull(left): - toDo.append(left.dereference()) - right = node["right"] - if not d.isNull(right): - toDo.append(right.dereference()) - i += 1 + i = helper(d, right.dereference(), nodeType, isCompact, forceLong, i) + + return i + + with Children(d, n, childType=innerType): + node = d_ptr["header"] + helper(d, node, nodeType, isCompact, forceLong, 0) - with SubItem(d, i): - d.putField("iname", d.currentIName) - if isCompact: - if forceLong: - d.putName("[%s] %s" % (i, node["key"])) - else: - d.putMapName(node["key"]) - d.putItem(node["value"]) - else: - qdump__QMapNode(d, node) def qdumpHelper__QMap(d, value, forceLong): -- GitLab