summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDiederik van Lierop <mailat-signdiedenrezidotnl>2010-10-19 20:50:03 +0000
committerDiederik van Lierop <mailat-signdiedenrezidotnl>2010-10-19 20:50:03 +0000
commit176e8ce89cd15a6bb3469ebac57736b3a0688e35 (patch)
tree25929a1f80fe64312c98152778723adc1e54fb0a /src
parentTranslations. POT files and French translation update. (diff)
downloadinkscape-176e8ce89cd15a6bb3469ebac57736b3a0688e35.tar.gz
inkscape-176e8ce89cd15a6bb3469ebac57736b3a0688e35.zip
Use a better snap metric for constrained snapping (i.e. calculate the distance to the original point, not the projected point). This should more accurately predict what the user wants to snap to
(bzr r9837)
Diffstat (limited to 'src')
-rw-r--r--src/line-snapper.cpp6
-rw-r--r--src/object-snapper.cpp2
2 files changed, 4 insertions, 4 deletions
diff --git a/src/line-snapper.cpp b/src/line-snapper.cpp
index be64438ed..22a964d43 100644
--- a/src/line-snapper.cpp
+++ b/src/line-snapper.cpp
@@ -99,8 +99,8 @@ void Inkscape::LineSnapper::constrainedSnap(SnappedConstraints &sc,
Geom::Coord d = Geom::L2(gridguide_line.versor()); // length of versor, needed to normalize the versor
if (d > 0) {
Geom::Point v = l*gridguide_line.versor()/d;
- _addSnappedPoint(sc, p_proj + v, Geom::L2(pp - (p_proj + v)), p.getSourceType(), p.getSourceNum(), true);
- _addSnappedPoint(sc, p_proj - v, Geom::L2(pp - (p_proj - v)), p.getSourceType(), p.getSourceNum(), true);
+ _addSnappedPoint(sc, p_proj + v, Geom::L2(p.getPoint() - (p_proj + v)), p.getSourceType(), p.getSourceNum(), true);
+ _addSnappedPoint(sc, p_proj - v, Geom::L2(p.getPoint() - (p_proj - v)), p.getSourceType(), p.getSourceNum(), true);
}
}
} else {
@@ -119,7 +119,7 @@ void Inkscape::LineSnapper::constrainedSnap(SnappedConstraints &sc,
if (inters) {
Geom::Point t = constraint_line.pointAt((*inters).ta);
- const Geom::Coord dist = Geom::L2(t - pp);
+ const Geom::Coord dist = Geom::L2(t - p.getPoint());
if (dist < getSnapperTolerance()) {
// When doing a constrained snap, we're already at an intersection.
// This snappoint is therefore fully constrained, so there's no need
diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp
index b11e857dc..7e7e25921 100644
--- a/src/object-snapper.cpp
+++ b/src/object-snapper.cpp
@@ -633,7 +633,7 @@ void Inkscape::ObjectSnapper::_snapPathsConstrained(SnappedConstraints &sc,
// Convert to desktop coordinates
(*p_inters) = _snapmanager->getDesktop()->doc2dt(*p_inters);
// Construct a snapped point
- Geom::Coord dist = Geom::L2(p_proj_on_constraint - *p_inters);
+ Geom::Coord dist = Geom::L2(p.getPoint() - *p_inters);
SnappedPoint s = SnappedPoint(*p_inters, p.getSourceType(), p.getSourceNum(), k->target_type, dist, getSnapperTolerance(), getSnapperAlwaysSnap(), true, k->target_bbox);;
// Store the snapped point
if (dist <= tolerance) { // If the intersection is within snapping range, then we might snap to it