summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDiederik van Lierop <mail@diedenrezi.nl>2014-07-05 13:23:33 +0000
committerDiederik van Lierop <mail@diedenrezi.nl>2014-07-05 13:23:33 +0000
commitc5a3e612c363f761171123cf62f65c85808c296e (patch)
treef1769d7befc718be3542707145974fe2c91b873b /src
parentFix pentool backspace bug. Thanks Jabier (diff)
downloadinkscape-c5a3e612c363f761171123cf62f65c85808c296e.tar.gz
inkscape-c5a3e612c363f761171123cf62f65c85808c296e.zip
Fix regression that prevented snapping back to original location, caused by rev. 13333
Fixed bugs: - https://launchpad.net/bugs/1337170 (bzr r13446)
Diffstat (limited to 'src')
-rw-r--r--src/seltrans.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/seltrans.cpp b/src/seltrans.cpp
index d6f31f073..d16e02e42 100644
--- a/src/seltrans.cpp
+++ b/src/seltrans.cpp
@@ -377,12 +377,6 @@ void Inkscape::SelTrans::transform(Geom::Affine const &rel_affine, Geom::Point c
g_return_if_fail(_grabbed);
g_return_if_fail(!_empty);
- // E.g. scaling a perfectly vertical line in horizontal direction will not work, and will produce an identity affine
-
- if (rel_affine.isIdentity()) {
- return;
- }
-
Geom::Affine const affine( Geom::Translate(-norm) * rel_affine * Geom::Translate(norm) );
if (_show == SHOW_CONTENT) {
@@ -1327,6 +1321,16 @@ void Inkscape::SelTrans::stretch(SPSelTransHandle const &/*handle*/, Geom::Point
void Inkscape::SelTrans::scale(Geom::Point &/*pt*/, guint /*state*/)
{
+ // E.g. scaling a perfectly vertical line in horizontal direction will not work, and will produce an identity affine
+ // Applying a transformation is useless, so we will not attempt to do so because this might trigger other bugs
+ // (see https://bugs.launchpad.net/inkscape/+bug/1256597)
+ // We check for this here and not in transform because identity transformations are perfectly fine for for example
+ // translations (e.g. a translation of (0,0), which occurs when snapping a point back to its original location)
+
+ if (_absolute_affine.isIdentity()) {
+ return;
+ }
+
transform(_absolute_affine, Geom::Point(0, 0)); // we have already accounted for origin, so pass 0,0
}