]> git.tokkee.org Git - inkscape.git/commitdiff

Code

Fix ctrl-scaling when there is no snap.
authorcth103 <cth103@users.sourceforge.net>
Mon, 8 May 2006 11:28:31 +0000 (11:28 +0000)
committercth103 <cth103@users.sourceforge.net>
Mon, 8 May 2006 11:28:31 +0000 (11:28 +0000)
src/seltrans.cpp

index 52907af30aaaebe3b4d1ab60e2b87bc8e4677b02..bbaaf2f9df1de0957925f6712865ef30f9ff2bd0 100644 (file)
@@ -805,13 +805,25 @@ gboolean Inkscape::SelTrans::scaleRequest(NR::Point &pt, guint state)
                                                                s,
                                                                _origin);
 
-        /* Choose the smaller difference in scale.  Since s[X] == s[Y] we can
-        ** just compare difference in s[X].
-        */
-        double const bd = bb.second ? fabs(bb.first[NR::X] - s[NR::X]) : NR_HUGE;
-        double const sd = sn.second ? fabs(sn.first[NR::X] - s[NR::X]) : NR_HUGE;
-        s = (bd < sd) ? bb.first : sn.first;
-        
+        if (bb.second == false && sn.second == false) {
+
+            /* We didn't snap, so just lock aspect ratio */
+            if (fabs(s[NR::X]) > fabs(s[NR::Y])) {
+                s[NR::X] = fabs(s[NR::Y]) * sign(s[NR::X]);
+            } else {
+                s[NR::Y] = fabs(s[NR::X]) * sign(s[NR::Y]);
+            }
+
+        } else {
+
+            /* Choose the smaller difference in scale.  Since s[X] == s[Y] we can
+            ** just compare difference in s[X].
+            */
+            double const bd = bb.second ? fabs(bb.first[NR::X] - s[NR::X]) : NR_HUGE;
+            double const sd = sn.second ? fabs(sn.first[NR::X] - s[NR::X]) : NR_HUGE;
+            s = (bd < sd) ? bb.first : sn.first;
+        }
+
     } else {
         /* Scale aspect ratio is unlocked */