summaryrefslogtreecommitdiffstats
path: root/src/gradient-drag.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2008-03-04 20:48:09 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2008-03-04 20:48:09 +0000
commitd6b9f0cfbec9c3a5e5629c2deca7a3f7ca49a040 (patch)
tree78f3f8212451ff555b5b25c11589c6806c0af933 /src/gradient-drag.cpp
parentadded italian about screens to trunk (for 0.46 and 0.46-devel) (diff)
downloadinkscape-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.cpp13
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);
+ }
}
}