From 9b38532c72d024f3dc94d70fd445828cdfd463a4 Mon Sep 17 00:00:00 2001 From: johanengelen Date: Tue, 4 Mar 2008 20:48:09 +0000 Subject: [PATCH] snapindicator for gradient knots --- src/gradient-drag.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp index a557209ea..874832f54 100644 --- a/src/gradient-drag.cpp +++ b/src/gradient-drag.cpp @@ -43,6 +43,7 @@ #include "snap.h" #include "sp-namedview.h" #include "selection-chemistry.h" +#include "display/snap-indicator.h" #define GR_KNOT_COLOR_NORMAL 0xffffff00 @@ -551,6 +552,8 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi // FIXME: take from prefs double snap_dist = SNAP_DIST / dragger->parent->desktop->current_zoom(); + dragger->parent->desktop->snapindicator->remove_snappoint(); + if (state & GDK_SHIFT_MASK) { // with Shift; unsnap if we carry more than one draggable if (dragger->draggables && dragger->draggables->next) { @@ -607,20 +610,30 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi if (s.getDistance() < 1e6) { p = s.getPoint(); sp_knot_moveto (knot, &p); + dragger->parent->desktop->snapindicator->set_new_snappoint(p.to_2geom()); } else { + bool was_snapped = false; + Geom::Point snapped_to; // No snapping so far, let's see if we need to snap to any of the levels for (guint i = 0; i < dragger->parent->hor_levels.size(); i++) { if (fabs(p[NR::Y] - dragger->parent->hor_levels[i]) < snap_dist) { p[NR::Y] = dragger->parent->hor_levels[i]; + snapped_to = p.to_2geom(); + was_snapped = true; sp_knot_moveto (knot, &p); } } for (guint i = 0; i < dragger->parent->vert_levels.size(); i++) { if (fabs(p[NR::X] - dragger->parent->vert_levels[i]) < snap_dist) { p[NR::X] = dragger->parent->vert_levels[i]; + snapped_to = p.to_2geom(); + was_snapped = true; sp_knot_moveto (knot, &p); } } + if (was_snapped) { + dragger->parent->desktop->snapindicator->set_new_snappoint(snapped_to); + } } } -- 2.39.5