From 749e5a00b1d6a18ec634484819abb82b5d0ccee5 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 8 Jul 2015 11:59:32 +0200 Subject: [PATCH] QmlDesigner: Add QmlItemNode::isInLayout() Change-Id: I3823c000599db2b1ed326463d4310c94b96f5466 Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/include/qmlitemnode.h | 1 + .../qmldesigner/designercore/model/qmlitemnode.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index f6c1ae24243..a98298176d2 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -125,6 +125,7 @@ public: void setPostionInBaseState(const QPointF &position); void setSize(const QSizeF &size); + bool isInLayout() const; }; QMLDESIGNERCORE_EXPORT uint qHash(const QmlItemNode &node); diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index b2694a28e22..e608894e735 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -597,6 +597,19 @@ void QmlItemNode::setPostionInBaseState(const QPointF &position) modelNode().variantProperty("y").setValue(qRound(position.y())); } +bool QmlItemNode::isInLayout() const +{ + if (isValid() && hasNodeParent()) { + + ModelNode parent = modelNode().parentProperty().parentModelNode(); + + if (parent.isValid() && parent.metaInfo().isValid()) + return parent.metaInfo().isSubclassOf("QtQuick.Layouts.Layout", -1, -1); + } + + return false; +} + void QmlItemNode::setSize(const QSizeF &size) { if (!hasBindingProperty("width") && !anchors().instanceHasAnchor(AnchorLineRight))