diff --git a/libs/main/types/pivaluetree.cpp b/libs/main/types/pivaluetree.cpp index 57eaa740..b88f0914 100644 --- a/libs/main/types/pivaluetree.cpp +++ b/libs/main/types/pivaluetree.cpp @@ -105,12 +105,13 @@ void PIValueTree::mergeAttributes(const PIVariantMap & a) { } -void PIValueTree::applyValues(const PIValueTree & root) { +void PIValueTree::applyValues(const PIValueTree & root, bool recursive) { if (_is_null) return; for (const auto & c: root._children) { for (auto & i: _children) { if (c.name() == i.name()) { i._value.setValueFromString(c.value().toString()); + if (recursive) i.applyValues(c, recursive); break; } } diff --git a/libs/main/types/pivaluetree.h b/libs/main/types/pivaluetree.h index fd760ed9..1b21e320 100644 --- a/libs/main/types/pivaluetree.h +++ b/libs/main/types/pivaluetree.h @@ -88,7 +88,7 @@ public: void setAttribute(const PIString & n, const PIVariant & a); void mergeAttributes(const PIVariantMap & a); - void applyValues(const PIValueTree & root); + void applyValues(const PIValueTree & root, bool recursive = true); const PIVector & children() const { return _children; } void clearChildren() { _children.clear(); }