X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Fsrc%2Fgtkmm%2Fstate_normal.cpp;h=2810db2d431a5fdb4ad20834a86b16d7afe108e7;hb=f5a6faad95ff8a107f3196d69c81dd2acd45e3f8;hp=36b9f8b8de131451496215de534f88aa320bdd7a;hpb=d80c7d1aa7dc791bd4f98b368b0c934b9c05b53f;p=synfig.git diff --git a/synfig-studio/src/gtkmm/state_normal.cpp b/synfig-studio/src/gtkmm/state_normal.cpp index 36b9f8b..2810db2 100644 --- a/synfig-studio/src/gtkmm/state_normal.cpp +++ b/synfig-studio/src/gtkmm/state_normal.cpp @@ -675,7 +675,10 @@ DuckDrag_Combo::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) if(bad_drag) return; - //std::set >::iterator iter; + //Override axis lock set in workarea when holding down the shift key + if (!move_only && (scale || rotate)) + duckmatic->set_axis_lock(false); + synfig::Vector vect; if (move_only || (!scale && !rotate)) vect= duckmatic->snap_point_to_grid(vector)-drag_offset+snap; @@ -715,8 +718,13 @@ DuckDrag_Combo::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) if (rotate) { - Angle::tan angle(vect[1],vect[0]); + Angle::deg angle(Angle::tan(vect[1],vect[0])); angle=original_angle-angle; + if (constrain) + { + float degrees = angle.get()/15; + angle= Angle::deg (degrees>0?std::floor(degrees)*15:std::ceil(degrees)*15); + } Real mag(vect.mag()/original_mag); Real sine(Angle::sin(angle).get()); Real cosine(Angle::cos(angle).get());