summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-12-20 12:03:44 +0000
committerjabiertxof <info@marker.es>2016-12-20 12:03:44 +0000
commit3d61abda24d5b63539ef4c73470e7099fb5597af (patch)
tree2f6f829704b8d7c06a9acde7efa269ce71f5d7b3 /src
parentRemove string from tip (diff)
downloadinkscape-3d61abda24d5b63539ef4c73470e7099fb5597af.tar.gz
inkscape-3d61abda24d5b63539ef4c73470e7099fb5597af.zip
Fix undo incosistences in mirror LPE and in copy rotate LPE
(bzr r15340)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-copy_rotate.cpp4
-rw-r--r--src/live_effects/lpe-mirror_symmetry.cpp23
2 files changed, 16 insertions, 11 deletions
diff --git a/src/live_effects/lpe-copy_rotate.cpp b/src/live_effects/lpe-copy_rotate.cpp
index 72896c1ae..153be031e 100644
--- a/src/live_effects/lpe-copy_rotate.cpp
+++ b/src/live_effects/lpe-copy_rotate.cpp
@@ -113,7 +113,7 @@ LPECopyRotate::doOnApply(SPLPEItem const* lpeitem)
A = Point(boundingbox_X.min(), boundingbox_Y.middle());
B = Point(boundingbox_X.middle(), boundingbox_Y.middle());
- origin.param_setValue(A);
+ origin.param_setValue(A, true);
origin.param_update_default(A);
dist_angle_handle = L2(B - A);
dir = unit_vector(B - A);
@@ -171,7 +171,7 @@ LPECopyRotate::doBeforeEffect (SPLPEItem const* lpeitem)
start_pos = origin + dir * Rotate(-rad_from_deg(starting_angle)) * dist_angle_handle;
rot_pos = origin + dir * Rotate(-rad_from_deg(rotation_angle+starting_angle)) * dist_angle_handle;
if (near) {
- starting_point.param_setValue(start_pos);
+ starting_point.param_setValue(start_pos, true);
}
previous_start_point = (Geom::Point)starting_point;
if ( fuse_paths || copies_to_360 ) {
diff --git a/src/live_effects/lpe-mirror_symmetry.cpp b/src/live_effects/lpe-mirror_symmetry.cpp
index 624bdaf12..9a6fb05dd 100644
--- a/src/live_effects/lpe-mirror_symmetry.cpp
+++ b/src/live_effects/lpe-mirror_symmetry.cpp
@@ -103,6 +103,7 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem)
{
using namespace Geom;
original_bbox(lpeitem);
+ //center_point->param_set_liveupdate(false);
Point point_a(boundingbox_X.max(), boundingbox_Y.min());
Point point_b(boundingbox_X.max(), boundingbox_Y.max());
Point point_c(boundingbox_X.max(), boundingbox_Y.middle());
@@ -114,16 +115,20 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem)
point_a = Geom::Point(center_point[X],boundingbox_Y.min());
point_b = Geom::Point(center_point[X],boundingbox_Y.max());
}
- if (Geom::are_near((Geom::Point)start_point, (Geom::Point)end_point, 0.01)) {
- start_point.param_setValue(point_a);
- end_point.param_setValue(point_b);
+ if ((Geom::Point)start_point == (Geom::Point)end_point && (Geom::Point)start_point == Geom::Point(0,0)) {
+ start_point.param_setValue(point_a, true);
+ end_point.param_setValue(point_b, true);
+ previous_center = Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point);
+ center_point.param_setValue(previous_center, true);
}
if ( mode == MT_X || mode == MT_Y ) {
start_point.param_setValue(point_a, true);
end_point.param_setValue(point_b, true);
} else if ( mode == MT_FREE) {
- if(!are_near(previous_center,center_point, 0.01)) {
- Geom::Point trans = center_point - previous_center;
+ if (are_near(previous_center, (Geom::Point)center_point, 0.01)) {
+ center_point.param_setValue(Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point), true);
+ } else {
+ Geom::Point trans = center_point - Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point);
start_point.param_setValue(start_point * trans, true);
end_point.param_setValue(end_point * trans, true);
}
@@ -150,10 +155,10 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem)
end_point.param_setValue(ep, true);
}
}
- previous_center = Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point);
- if (!are_near(previous_center, center_point,0.01)) {
- center_point.param_setValue(previous_center);
+ if (!are_near(previous_center, (Geom::Point)center_point, 0.01)) {
+ center_point.param_setValue(Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point), true);
}
+ previous_center = center_point;
}
void
@@ -181,7 +186,7 @@ LPEMirrorSymmetry::doOnApply (SPLPEItem const* lpeitem)
start_point.param_update_default(point_a);
end_point.param_setValue(point_b, true);
end_point.param_update_default(point_b);
- center_point.param_setValue(point_c);
+ center_point.param_setValue(point_c, true);
previous_center = center_point;
}