From 80909210b1a0acef14e818fec1d7819ec6f47607 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 14 Jul 2011 14:28:48 +0200 Subject: [PATCH] QmlDesigner.instances: ignore infinite/huge bounding rects There are cases with infinite/huge bounding rects. We ignore those. Change-Id: If9a55bef91ab5aec4736c579131f4edf10768469 Reviewed-on: http://codereview.qt.nokia.com/1660 Reviewed-by: Qt Sanity Bot Reviewed-by: Marco Bubke Reviewed-by: Thomas Hartmann --- .../qmlpuppet/instances/graphicsobjectnodeinstance.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp index c926c6b68fa..2be9b284ba2 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp @@ -180,6 +180,11 @@ QObject *GraphicsObjectNodeInstance::parent() const return graphicsObject()->parentItem()->toGraphicsObject(); } +static inline bool isRectangleSane(const QRect &rect) +{ + return rect.isValid() && (rect.width() < 10000) && (rec.height() < 10000); +} + QRectF GraphicsObjectNodeInstance::boundingRectWithStepChilds(QGraphicsItem *parentItem) const { QRectF boundingRect = parentItem->boundingRect(); @@ -188,7 +193,8 @@ QRectF GraphicsObjectNodeInstance::boundingRectWithStepChilds(QGraphicsItem *par QGraphicsObject *childObject = childItem->toGraphicsObject(); if (!(childObject && nodeInstanceServer()->hasInstanceForObject(childObject))) { QRectF transformedRect = childItem->mapRectToParent(boundingRectWithStepChilds(childItem)); - boundingRect = boundingRect.united(transformedRect); + if (isRectangleSane(transformedRect)) + boundingRect = boundingRect.united(transformedRect); } }