X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Factions%2Fvaluenodedynamiclistunloop.cpp;fp=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Factions%2Fvaluenodedynamiclistunloop.cpp;h=9b107a23ade035ab90be7da151cbe34f2086bc74;hb=74d03302d1e6f05f1f90d4c2a3b38a03aa51dc86;hp=2d04245422808a3d5efd99e5fd9c5d11e6fe5797;hpb=6f28bee2a11612b1b1ece247dd4914dab4931a30;p=synfig.git diff --git a/synfig-studio/trunk/src/synfigapp/actions/valuenodedynamiclistunloop.cpp b/synfig-studio/trunk/src/synfigapp/actions/valuenodedynamiclistunloop.cpp index 2d04245..9b107a2 100644 --- a/synfig-studio/trunk/src/synfigapp/actions/valuenodedynamiclistunloop.cpp +++ b/synfig-studio/trunk/src/synfigapp/actions/valuenodedynamiclistunloop.cpp @@ -78,7 +78,12 @@ Action::ValueNodeDynamicListUnLoop::is_canidate(const ParamList &x) { if(canidate_check(get_param_vocab(),x)) { - ValueNode::Handle value_node(x.find("value_node")->second.get_value_node()); + ValueNode::Handle value_node; + ValueDesc value_desc(x.find("value_desc")->second.get_value_desc()); + if(value_desc.parent_is_value_node()) + value_node = value_desc.get_parent_value_node(); + else + value_node = x.find("value_node")->second.get_value_node(); if(!ValueNode_DynamicList::Handle::cast_dynamic(value_node)) return false; if(ValueNode_DynamicList::Handle::cast_dynamic(value_node)->get_loop()==false) @@ -91,7 +96,22 @@ Action::ValueNodeDynamicListUnLoop::is_canidate(const ParamList &x) bool Action::ValueNodeDynamicListUnLoop::set_param(const synfig::String& name, const Action::Param ¶m) { - if(name=="value_node" && param.get_type()==Param::TYPE_VALUENODE) + if(!value_node && name=="value_desc" && param.get_type()==Param::TYPE_VALUEDESC) + { + ValueDesc value_desc(param.get_value_desc()); + + if(!value_desc.parent_is_value_node()) + return false; + + value_node=ValueNode_DynamicList::Handle::cast_dynamic(value_desc.get_parent_value_node()); + + if (!value_node) + return false; + + return true; + } + + if(!value_node && name=="value_node" && param.get_type()==Param::TYPE_VALUENODE) { value_node=ValueNode_DynamicList::Handle::cast_dynamic(param.get_value_node());