summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/clonetiler.cpp
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2015-02-20 14:40:47 +0000
committer~suv <suv-sf@users.sourceforge.net>2015-02-20 14:40:47 +0000
commit9bacdf4f38f77a791b30130071ebd6dbaa7208d5 (patch)
treed45d45db9647f1d1b1a67d7f3df9504cd67ddfc3 /src/ui/dialog/clonetiler.cpp
parentMitre is not an SVG/CSS unit. Don't test. (diff)
downloadinkscape-9bacdf4f38f77a791b30130071ebd6dbaa7208d5.tar.gz
inkscape-9bacdf4f38f77a791b30130071ebd6dbaa7208d5.zip
Clones. Fix for bug #168651 (Tiled clones inside transformed groups broken)
Fixed bugs: - https://launchpad.net/bugs/168651 (bzr r13929)
Diffstat (limited to 'src/ui/dialog/clonetiler.cpp')
-rw-r--r--src/ui/dialog/clonetiler.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp
index fede30b26..8628f11d5 100644
--- a/src/ui/dialog/clonetiler.cpp
+++ b/src/ui/dialog/clonetiler.cpp
@@ -2409,7 +2409,7 @@ void CloneTiler::clonetiler_apply(GtkWidget */*widget*/, GtkWidget *dlg)
// Note: We create a clone at 0,0 too, right over the original, in case our clones are colored
// Get transform from symmetry, shift, scale, rotation
- Geom::Affine t = clonetiler_get_transform (type, i, j, center[Geom::X], center[Geom::Y], w, h,
+ Geom::Affine orig_t = clonetiler_get_transform (type, i, j, center[Geom::X], center[Geom::Y], w, h,
shiftx_per_i, shifty_per_i,
shiftx_per_j, shifty_per_j,
shiftx_rand, shifty_rand,
@@ -2428,7 +2428,8 @@ void CloneTiler::clonetiler_apply(GtkWidget */*widget*/, GtkWidget *dlg)
rotate_rand,
rotate_alternatei, rotate_alternatej,
rotate_cumulatei, rotate_cumulatej );
-
+ Geom::Affine parent_transform = (((SPItem*)item->parent)->i2doc_affine())*(item->document->getRoot()->c2p.inverse());
+ Geom::Affine t = parent_transform*orig_t*parent_transform.inverse();
cur = center * t - center;
if (fillrect) {
if ((cur[Geom::X] > fillwidth) || (cur[Geom::Y] > fillheight)) { // off limits
@@ -2590,7 +2591,7 @@ void CloneTiler::clonetiler_apply(GtkWidget */*widget*/, GtkWidget *dlg)
Geom::Point new_center;
bool center_set = false;
if (obj_repr->attribute("inkscape:transform-center-x") || obj_repr->attribute("inkscape:transform-center-y")) {
- new_center = scale_units*desktop->dt2doc(item->getCenter()) * t;
+ new_center = scale_units*desktop->dt2doc(item->getCenter()) * orig_t;
center_set = true;
}