From c992a9ff08aea1cca785765a522e3fdf4403c12e Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 24 Feb 2015 13:49:28 +0100 Subject: [PATCH] Debugger: Add dumpers for QPolygon{,F} and QGraphicsPolygonItem Change-Id: Ic246b28d44312a677c8d41194d4e0c324bda125d Reviewed-by: Christian Stenger --- share/qtcreator/debugger/qttypes.py | 15 +++++++++++++++ tests/auto/debugger/tst_dumpers.cpp | 17 +++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index f5e5bc76beb..de17b64283e 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1715,6 +1715,21 @@ def qform__QStack(): def qdump__QStack(d, value): qdump__QVector(d, value) +def qdump__QPolygonF(d, value): + qdump__QVector(d, value.cast(d.directBaseClass(value.type, 0))) + d.putBetterType(d.currentType) + +def qdump__QPolygon(d, value): + qdump__QVector(d, value.cast(d.directBaseClass(value.type, 0))) + d.putBetterType(d.currentType) + +def qdump__QGraphicsPolygonItem(d, value): + dptr = d.extractPointer(d.addressOf(value) + d.ptrSize()) # Skip vtable + # Assume sizeof(QGraphicsPolygonItemPrivate) == 400 + offset = 308 if d.is32bit() else 384 + data, size, alloc = d.vectorDataHelper(d.extractPointer(dptr + offset)) + d.putItemCount(size) + d.putPlotData(data, size, d.lookupQtType("QPointF")) def qdump__QStandardItem(d, value): d.putBetterType(d.currentType) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 32c457ed8b4..ff3da1dd52d 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -5768,6 +5768,23 @@ void tst_Dumpers::dumper_data() + Check("u32", "68", "uint32_t") + Check("s32", "69", "int32_t"); + QTest::newRow("QPolygon") + << Data("#include \n" + "#include \n" + "#include \n", + "QApplication app(argc, argv);\n" + "QGraphicsScene sc;\n" + "QPolygonF pol;\n" + "pol.append(QPointF(1, 2));\n" + "pol.append(QPointF(2, 2));\n" + "pol.append(QPointF(3, 3));\n" + "pol.append(QPointF(2, 4));\n" + "pol.append(QPointF(1, 4));\n" + "QGraphicsPolygonItem *p = sc.addPolygon(pol);\n" + "unused(&p);\n") + + GuiProfile() + + Check("pol", "<5 items>", "@QPolygonF") + + Check("p", "<5 items>", "@QGraphicsPolygonItem"); } int main(int argc, char *argv[])