summaryrefslogtreecommitdiffstats
path: root/src/snap.cpp
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-03-14 21:04:08 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-03-14 21:04:08 +0000
commita87f933596b37ac2194537f20d4bf91b8899adba (patch)
tree21a790b0adfe0d7b403f5268d7bf9452d540e48e /src/snap.cpp
parentfix pasting of LPE stacks (diff)
downloadinkscape-a87f933596b37ac2194537f20d4bf91b8899adba.tar.gz
inkscape-a87f933596b37ac2194537f20d4bf91b8899adba.zip
New node tool: implement handle snapping
Fixed bugs: - https://launchpad.net/bugs/538487 (bzr r9192)
Diffstat (limited to 'src/snap.cpp')
-rw-r--r--src/snap.cpp21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/snap.cpp b/src/snap.cpp
index 352683623..b8b08dad5 100644
--- a/src/snap.cpp
+++ b/src/snap.cpp
@@ -368,32 +368,25 @@ Inkscape::SnappedPoint SnapManager::constrainedSnap(Inkscape::SnapCandidatePoint
Inkscape::SnappedPoint no_snap = Inkscape::SnappedPoint(pp, p.getSourceType(), p.getSourceNum(), Inkscape::SNAPTARGET_CONSTRAINT, Geom::L2(pp - p.getPoint()), 0, false, false);
if (!someSnapperMightSnap()) {
- // The constraint should always be enforced, so we return pp here instead of p
- if (_snapindicator) {
- _desktop->snapindicator->set_new_snaptarget(no_snap);
- }
+ // Always return point on constraint
return no_snap;
}
- // Then try to snap the projected point
- Inkscape::SnapCandidatePoint candidate(pp, p.getSourceType(), p.getSourceNum(), Inkscape::SNAPTARGET_UNDEFINED, Geom::Rect());
-
SnappedConstraints sc;
SnapperList const snappers = getSnappers();
for (SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) {
- (*i)->constrainedSnap(sc, candidate, bbox_to_snap, constraint, &_items_to_ignore);
+ (*i)->constrainedSnap(sc, p, bbox_to_snap, constraint, &_items_to_ignore);
}
- Inkscape::SnappedPoint result = findBestSnap(candidate, sc, true);
+ Inkscape::SnappedPoint result = findBestSnap(p, sc, true);
if (result.getSnapped()) {
+ // only change the snap indicator if we really snapped to something
+ if (_snapindicator) {
+ _desktop->snapindicator->set_new_snaptarget(result);
+ }
return result;
}
-
- // The constraint should always be enforced, so we return pp here instead of p
- if (_snapindicator) {
- _desktop->snapindicator->set_new_snaptarget(no_snap);
- }
return no_snap;
}