X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Flayer.cpp;h=8fcbfbff9843dcfffd41611292315f7bc5ea43ce;hb=c6b96867f534d312015b12fd8f1e9a008c1ab848;hp=76438833ba73227cc120f8828a3b9560e0b8e34e;hpb=47a979c060132d120dbc8160aa9ae2e8c9d900c0;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/layer.cpp b/synfig-core/trunk/src/synfig/layer.cpp index 7643883..8fcbfbf 100644 --- a/synfig-core/trunk/src/synfig/layer.cpp +++ b/synfig-core/trunk/src/synfig/layer.cpp @@ -266,7 +266,19 @@ Layer::disconnect_dynamic_param(const String& param) if(previous) { dynamic_param_list_.erase(param); - remove_child(previous.get()); + + // fix 2353284: if two parameters in the same layer are + // connected to the same valuenode and we disconnect one of + // them, the parent-child relationship for the remaining + // connection was being deleted. now we search the parameter + // list to see if another parameter uses the same valuenode + DynamicParamList::const_iterator iter; + for (iter = dynamic_param_list().begin(); iter != dynamic_param_list().end(); iter++) + if (iter->second == previous) + break; + if (iter == dynamic_param_list().end()) + remove_child(previous.get()); + changed(); } return true;