{
_layer_book=new Book();
-#define INCLUDE_LAYER(class) synfig::Layer::book()[synfig::String(class::name__)]=BookEntry(class::create,class::name__,dgettext("synfig",class::local_name__),dgettext("synfig",class::category__),class::cvs_id__,class::version__)
-#define LAYER_ALIAS(class,alias) synfig::Layer::book()[synfig::String(alias)]=synfig::Layer::BookEntry(class::create,alias,alias,CATEGORY_DO_NOT_USE,class::cvs_id__,class::version__);
+#define INCLUDE_LAYER(class) \
+ synfig::Layer::book() [synfig::String(class::name__)] = \
+ BookEntry(class::create, \
+ class::name__, \
+ dgettext("synfig", class::local_name__), \
+ class::category__, \
+ class::cvs_id__, \
+ class::version__)
+
+#define LAYER_ALIAS(class,alias) \
+ synfig::Layer::book()[synfig::String(alias)] = \
+ BookEntry(class::create, \
+ alias, \
+ alias, \
+ CATEGORY_DO_NOT_USE, \
+ class::cvs_id__, \
+ class::version__)
INCLUDE_LAYER(Layer_SolidColor); LAYER_ALIAS(Layer_SolidColor, "solid_color");
INCLUDE_LAYER(Layer_PasteCanvas); LAYER_ALIAS(Layer_PasteCanvas, "paste_canvas");
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;
Layer::on_changed()
{
dirty_time_=Time::end();
- if(active())
- Node::on_changed();
+ Node::on_changed();
}
bool
return (*dynamic_param_list().find("z_depth")->second)(t).get(Real());
}
-#ifdef THIS_CODE_IS_NOT_USED
-Layer*
+Layer::Handle
Layer::simple_clone()const
{
if(!book().count(get_name())) return 0;
- Layer *ret = create(get_name()).get();
- ret->set_canvas(get_canvas());
+ Handle ret = create(get_name()).get();
+ ret->group_=group_;
+ //ret->set_canvas(get_canvas());
ret->set_description(get_description());
+ ret->set_active(active());
ret->set_param_list(get_param_list());
+ for(DynamicParamList::const_iterator iter=dynamic_param_list().begin();iter!=dynamic_param_list().end();++iter)
+ ret->connect_dynamic_param(iter->first, iter->second);
return ret;
}
-#endif /* THIS_CODE_IS_NOT_USED */
Layer::Handle
Layer::clone(const GUID& deriv_guid) const
{
if(dynamic_param_list().count(iter->first)==0 && iter->second.get_type()==ValueBase::TYPE_CANVAS)
{
-
// This parameter is a canvas. We need a close look.
Canvas::Handle canvas(iter->second.get(Canvas::Handle()));
if(canvas && canvas->is_inline())