X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fcanvasview.cpp;h=b9cc89f415085ad40068e90339f30ef450410343;hb=990020c885f51f95108124255e6caf18051edbaa;hp=2c4815867d5860abc33da37b99ea07efb4fd0c3b;hpb=071939c9c44d0080e0843381adc19a6600f0fd69;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index 2c48158..b9cc89f 100644 --- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -2589,11 +2590,20 @@ CanvasView::on_duck_changed(const synfig::Point &value,const synfigapp::ValueDes switch(value_desc.get_value_type()) { case ValueBase::TYPE_REAL: + if (ValueNode_BLineCalcWidth::Handle bline_width = ValueNode_BLineCalcWidth::Handle::cast_dynamic(value_desc.get_value_node())) + { + Real old_width((*bline_width)(get_time()).get(Real())); + Real new_width(value.mag()); + int scale_index(bline_width->get_link_index_from_name("scale")); + Real scale((*(bline_width->get_link(scale_index)))(get_time()).get(Real())); + return canvas_interface()->change_value(synfigapp::ValueDesc(bline_width,scale_index), new_width * scale / old_width); + } + return canvas_interface()->change_value(value_desc,value.mag()); - break; + case ValueBase::TYPE_ANGLE: return canvas_interface()->change_value(value_desc,Angle::tan(value[1],value[0])); - break; + case ValueBase::TYPE_VECTOR: if (ValueNode_BLineCalcTangent::Handle bline_tangent = ValueNode_BLineCalcTangent::Handle::cast_dynamic(value_desc.get_value_node())) {