From 979e2c299c8b43f8d939015d7413fbbce9fe400d Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 1 Jul 2010 09:44:18 +0200
Subject: [PATCH] debugger: improve QRegion dumper

Don't use inferior calls anymore.
---
 share/qtcreator/gdbmacros/gdbmacros.py  | 16 +++++++++++-----
 tests/manual/gdbdebugger/simple/app.cpp |  3 +++
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py
index 9795251c9ed..4ff2a806396 100644
--- a/share/qtcreator/gdbmacros/gdbmacros.py
+++ b/share/qtcreator/gdbmacros/gdbmacros.py
@@ -1378,11 +1378,17 @@ def qdump__QRectF(d, item):
 
 
 def qdump__QRegion(d, item):
-    d.putValue(" ")
-    d.putNumChild(1)
-    if d.isExpanded(item):
-        with Children(d):
-            d.putCallItem("rects", item, "rects()")
+    p = item.value["d"].dereference()["qt_rgn"]
+    if isNull(p):
+        d.putValue("<empty>")
+        d.putNumChild(0)
+    else:
+        n = str(p.dereference()["numRects"])
+        d.putItemCount(n)
+        d.putNumChild(n)
+        if d.isExpanded(item):
+            with Children(d):
+                d.putFields(Item(p.dereference(), item.iname))
 
 # qt_rgn might be 0
 # gdb.parse_and_eval("region")["d"].dereference()["qt_rgn"].dereference()
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index b71114418ec..3842c31d464 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -810,6 +810,9 @@ void testQRegion()
     region += QRect(100, 100, 200, 200);
     region += QRect(300, 300, 400, 500);
     region += QRect(500, 500, 600, 600);
+    region += QRect(500, 500, 600, 600);
+    region += QRect(500, 500, 600, 600);
+    region += QRect(500, 500, 600, 600);
 }
 
 
-- 
GitLab