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>
This commit is contained in:
Marco Bubke
2011-07-18 21:16:23 +02:00
committed by Thomas Hartmann
parent 97ad34bcc4
commit a060480e82
2 changed files with 23 additions and 2 deletions

View File

@@ -34,6 +34,8 @@
#include <QGraphicsObject> #include <QGraphicsObject>
#include "private/qgraphicsitem_p.h" #include "private/qgraphicsitem_p.h"
#include <private/qdeclarativemetatype_p.h>
#include <QStyleOptionGraphicsItem> #include <QStyleOptionGraphicsItem>
#include <QPixmap> #include <QPixmap>
#include <QSizeF> #include <QSizeF>
@@ -57,9 +59,28 @@ QGraphicsObject *GraphicsObjectNodeInstance::graphicsObject() const
return static_cast<QGraphicsObject*>(object()); 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 bool GraphicsObjectNodeInstance::hasContent() const
{ {
return m_hasContent; if (m_hasContent)
return true;
return childrenHasContent(graphicsObject());
} }
QList<ServerNodeInstance> GraphicsObjectNodeInstance::childItems() const QList<ServerNodeInstance> GraphicsObjectNodeInstance::childItems() const

View File

@@ -88,7 +88,7 @@ protected:
QGraphicsObject *graphicsObject() const; QGraphicsObject *graphicsObject() const;
void paintRecursively(QGraphicsItem *graphicsItem, QPainter *painter) const; void paintRecursively(QGraphicsItem *graphicsItem, QPainter *painter) const;
QRectF boundingRectWithStepChilds(QGraphicsItem *parentItem) const; QRectF boundingRectWithStepChilds(QGraphicsItem *parentItem) const;
bool childrenHasContent(QGraphicsItem *graphicsItem) const;
private: // variables private: // variables
bool m_hasContent; bool m_hasContent;