diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2008-03-04 20:48:09 +0000 |
|---|---|---|
| committer | johanengelen <johanengelen@users.sourceforge.net> | 2008-03-04 20:48:09 +0000 |
| commit | d6b9f0cfbec9c3a5e5629c2deca7a3f7ca49a040 (patch) | |
| tree | 78f3f8212451ff555b5b25c11589c6806c0af933 /src/gradient-drag.cpp | |
| parent | added italian about screens to trunk (for 0.46 and 0.46-devel) (diff) | |
| download | inkscape-d6b9f0cfbec9c3a5e5629c2deca7a3f7ca49a040.tar.gz inkscape-d6b9f0cfbec9c3a5e5629c2deca7a3f7ca49a040.zip | |
snapindicator for gradient knots
(bzr r4958)
Diffstat (limited to 'src/gradient-drag.cpp')
| -rw-r--r-- | src/gradient-drag.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
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); + } } } |
