X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fcanvasview.cpp;h=8991ada48a3125dc3c45d3ddf86cb8812d14e159;hb=b342fcadc2077545469c2c967dde580231e6f77b;hp=9357698e2317747e9b97ae07d4faa99886e7a934;hpb=0f6cbbaa466e8da2ac71586793015854d27f72be;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index 9357698..8991ada 100644 --- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp @@ -2596,15 +2596,14 @@ CanvasView::on_duck_changed(const synfig::Point &value,const synfigapp::ValueDes 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())); - if (!(canvas_interface()->change_value(synfigapp::ValueDesc(bline_width,scale_index), - new_width * scale / old_width))) - return false; + 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())) { @@ -2651,6 +2650,13 @@ CanvasView::on_duck_changed(const synfig::Point &value,const synfigapp::ValueDes bool CanvasView::on_duck_angle_changed(const synfig::Angle &rotation,const synfigapp::ValueDesc& value_desc) { + if (ValueNode_BLineCalcTangent::Handle bline_tangent = ValueNode_BLineCalcTangent::Handle::cast_dynamic(value_desc.get_value_node())) + { + int offset_index(bline_tangent->get_link_index_from_name("offset")); + Angle old_offset((*(bline_tangent->get_link(offset_index)))(get_time()).get(Angle())); + return canvas_interface()->change_value(synfigapp::ValueDesc(bline_tangent,offset_index), old_offset + rotation); + } + // \todo will this really always be the case? assert(value_desc.get_value_type() == ValueBase::TYPE_ANGLE); return canvas_interface()->change_value(value_desc, value_desc.get_value(get_time()).get(Angle()) + rotation);