diff --git a/src/plugins/qmldesigner/designercore/include/nodeabstractproperty.h b/src/plugins/qmldesigner/designercore/include/nodeabstractproperty.h index fbfa0160adb..8bf2306313c 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeabstractproperty.h +++ b/src/plugins/qmldesigner/designercore/include/nodeabstractproperty.h @@ -56,6 +56,7 @@ public: bool isEmpty() const; int count() const; int indexOf(const ModelNode &node) const; + NodeAbstractProperty parentProperty() const; const QList allSubNodes(); const QList directSubNodes() const; diff --git a/src/plugins/qmldesigner/designercore/model/nodeabstractproperty.cpp b/src/plugins/qmldesigner/designercore/model/nodeabstractproperty.cpp index c8f811f69d3..bb81b8e922a 100644 --- a/src/plugins/qmldesigner/designercore/model/nodeabstractproperty.cpp +++ b/src/plugins/qmldesigner/designercore/model/nodeabstractproperty.cpp @@ -116,6 +116,21 @@ int NodeAbstractProperty::indexOf(const ModelNode &node) const return property->indexOf(node.internalNode()); } +NodeAbstractProperty NodeAbstractProperty::parentProperty() const +{ + if (!isValid()) { + Q_ASSERT_X(isValid(), Q_FUNC_INFO, "property is invalid"); + throw InvalidPropertyException(__LINE__, __FUNCTION__, __FILE__, name()); + } + + if (internalNode()->parentProperty().isNull()) { + Q_ASSERT_X(internalNode()->parentProperty(), Q_FUNC_INFO, "parentProperty is invalid"); + throw InvalidPropertyException(__LINE__, __FUNCTION__, __FILE__, "parent"); + } + + return NodeAbstractProperty(internalNode()->parentProperty()->name(), internalNode()->parentProperty()->propertyOwner(), model(), view()); +} + int NodeAbstractProperty::count() const { Internal::InternalNodeAbstractProperty::Pointer property = internalNode()->nodeAbstractProperty(name());