From ae55b43c3782a06d625805e2135f2a0c3b7754b2 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Fri, 13 Aug 2010 09:50:14 +0200
Subject: [PATCH] debugger: fix display of QObject properties

This is a backport of 5d645bfdfe87b22315997847191ac7d45b243e99
---
 share/qtcreator/gdbmacros/dumper.py    | 11 +++++++++++
 share/qtcreator/gdbmacros/gdbmacros.py |  9 +++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py
index 317224d52f4..d49e1682fe0 100644
--- a/share/qtcreator/gdbmacros/dumper.py
+++ b/share/qtcreator/gdbmacros/dumper.py
@@ -1326,6 +1326,13 @@ class Dumper:
         nsStrippedType = self.stripNamespaceFromType(
             typedefStrippedType).replace("::", "__")
 
+        # Is this derived from QObject?
+        try:
+            item.value['staticMetaObject']
+            hasMetaObject = True
+        except:
+            hasMetaObject = False
+
         #warn(" STRIPPED: %s" % nsStrippedType)
         #warn(" DUMPERS: %s" % self.dumpers)
         #warn(" DUMPERS: %s" % (nsStrippedType in self.dumpers))
@@ -1336,6 +1343,10 @@ class Dumper:
             self.putValue(value)
             self.putNumChild(0)
 
+        elif hasMetaObject and self.useFancy:
+            self.putType(item.value.type)
+            qdump__QObject(self, item)
+
         elif nsStrippedType in self.dumpers:
             #warn("IS DUMPABLE: %s " % type)
             self.putType(item.value.type)
diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py
index 60869f6e8d8..4db5d3850c9 100644
--- a/share/qtcreator/gdbmacros/gdbmacros.py
+++ b/share/qtcreator/gdbmacros/gdbmacros.py
@@ -578,9 +578,6 @@ def extractCString(table, offset):
     return result
 
 
-def qdump__QWidget(d, item):
-    qdump__QObject(d, item)
-
 def qdump__QObject(d, item):
     #warn("OBJECT: %s " % item.value)
     staticMetaObject = item.value["staticMetaObject"]
@@ -617,15 +614,15 @@ def qdump__QObject(d, item):
     d.putNumChild(4)
     if d.isExpanded(item):
       with Children(d):
+        d.putFields(item)
         # Parent and children.
         d.putItem(Item(d_ptr["parent"], item.iname, "parent", "parent"))
         d.putItem(Item(d_ptr["children"], item.iname, "children", "children"))
 
         # Properties.
         with SubItem(d):
-            #propertyCount = metaData[6]
-            # FIXME: Replace with plain memory accesses.
-            propertyCount = call(mo, "propertyCount()")
+            propertyCount = metaData[6]
+            #propertyCount = call(mo, "propertyCount()")
             #warn("PROPERTY COUNT: %s" % propertyCount)
             propertyData = metaData[7]
             d.putName("properties")
-- 
GitLab