summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/snap.cpp9
-rw-r--r--src/snapped-point.cpp4
2 files changed, 12 insertions, 1 deletions
diff --git a/src/snap.cpp b/src/snap.cpp
index 8d3103122..30fc5387e 100644
--- a/src/snap.cpp
+++ b/src/snap.cpp
@@ -1456,7 +1456,14 @@ void SnapManager::_displaySnapsource(Inkscape::SnapCandidatePoint const &p) cons
void SnapManager::keepClosestPointOnly(std::vector<Inkscape::SnapCandidatePoint> &points, const Geom::Point &reference) const
{
- if (points.size() < 2) return;
+ if (points.size() == 0) {
+ return;
+ }
+
+ if (points.size() == 1) {
+ points.front().setSourceNum(-1); // Just in case
+ return;
+ }
Inkscape::SnapCandidatePoint closest_point = Inkscape::SnapCandidatePoint(Geom::Point(Geom::infinity(), Geom::infinity()), Inkscape::SNAPSOURCE_UNDEFINED, Inkscape::SNAPTARGET_UNDEFINED);
Geom::Coord closest_dist = Geom::infinity();
diff --git a/src/snapped-point.cpp b/src/snapped-point.cpp
index 2db3d62e4..a777e4dc0 100644
--- a/src/snapped-point.cpp
+++ b/src/snapped-point.cpp
@@ -131,6 +131,10 @@ bool Inkscape::SnappedPoint::isOtherSnapBetter(Inkscape::SnappedPoint const &oth
return false;
}
+ if (!getSnapped() && other_one.getSnapped()) {
+ return true;
+ }
+
double dist_other = other_one.getSnapDistance();
double dist_this = getSnapDistance();