From a060480e822ddf49ac4239cf857f9d25d6c497f6 Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@nokia.com> Date: Mon, 18 Jul 2011 21:16:23 +0200 Subject: [PATCH] QmlDesigner.NodeInstances: Item with content are selectable If a list view for example has content it is now selectable too. Task-number: QTCREATORBUG-5476 Change-Id: Ifb0902edcda064e488337c94fc4e575994da3ef1 Reviewed-on: http://codereview.qt.nokia.com/1786 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com> --- .../instances/graphicsobjectnodeinstance.cpp | 23 ++++++++++++++++++- .../instances/graphicsobjectnodeinstance.h | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp index 5aa25d4ef97..8ed7b127213 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp @@ -34,6 +34,8 @@ #include <QGraphicsObject> #include "private/qgraphicsitem_p.h" +#include <private/qdeclarativemetatype_p.h> + #include <QStyleOptionGraphicsItem> #include <QPixmap> #include <QSizeF> @@ -57,9 +59,28 @@ QGraphicsObject *GraphicsObjectNodeInstance::graphicsObject() const return static_cast<QGraphicsObject*>(object()); } +bool GraphicsObjectNodeInstance::childrenHasContent(QGraphicsItem *graphicsItem) const +{ + QGraphicsObject *graphicsObject = graphicsItem->toGraphicsObject(); + + if (graphicsObject && !nodeInstanceServer()->hasInstanceForObject(graphicsObject) && !graphicsItem->flags().testFlag(QGraphicsItem::ItemHasNoContents)) + return true; + + foreach (QGraphicsItem *childItem, graphicsItem->childItems()) { + bool childHasContent = childrenHasContent(childItem); + if (childHasContent) + return true; + } + + return false; +} + bool GraphicsObjectNodeInstance::hasContent() const { - return m_hasContent; + if (m_hasContent) + return true; + + return childrenHasContent(graphicsObject()); } QList<ServerNodeInstance> GraphicsObjectNodeInstance::childItems() const diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.h index 0fab8049637..781a18508cf 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.h @@ -88,7 +88,7 @@ protected: QGraphicsObject *graphicsObject() const; void paintRecursively(QGraphicsItem *graphicsItem, QPainter *painter) const; QRectF boundingRectWithStepChilds(QGraphicsItem *parentItem) const; - + bool childrenHasContent(QGraphicsItem *graphicsItem) const; private: // variables bool m_hasContent; -- GitLab