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 <qt_sanity_bot@ovi.com>
Reviewed-by: Marco Bubke <marco.bubke@nokia.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
This commit is contained in:
Thomas Hartmann
2011-07-14 14:28:48 +02:00
parent d53f595879
commit 80909210b1

View File

@@ -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);
}
}