From dc282cc4f6e376f45d24087e76527560d21e495b Mon Sep 17 00:00:00 2001 From: Diederik van Lierop Date: Mon, 4 Aug 2008 21:09:10 +0000 Subject: While drawing and constraining to specific angles (using CTRL): don't try a freeSnap() after we've already tried a constrainedSnap() (bzr r6560) --- src/draw-context.cpp | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'src/draw-context.cpp') diff --git a/src/draw-context.cpp b/src/draw-context.cpp index a127df877..2d0267757 100644 --- a/src/draw-context.cpp +++ b/src/draw-context.cpp @@ -445,11 +445,6 @@ spdc_attach_selection(SPDrawContext *dc, Inkscape::Selection */*sel*/) void spdc_endpoint_snap_rotation(SPEventContext const *const ec, NR::Point &p, NR::Point const o, guint state) { - /* Control must be down for this snap to work */ - if ((state & GDK_CONTROL_MASK) == 0) { - return; - } - unsigned const snaps = abs(prefs_get_int_attribute("options.rotationsnapsperpi", "value", 12)); /* 0 means no snapping. */ @@ -480,21 +475,20 @@ void spdc_endpoint_snap_rotation(SPEventContext const *const ec, NR::Point &p, N if (fabs(bdot) > 0) { p = o + bdot * best; - /* Snap it along best vector */ - SnapManager &m = SP_EVENT_CONTEXT_DESKTOP(ec)->namedview->snap_manager; - m.setup(SP_EVENT_CONTEXT_DESKTOP(ec), NULL); - m.constrainedSnapReturnByRef( Inkscape::Snapper::SNAPPOINT_NODE, p, Inkscape::Snapper::ConstraintLine(best)); + if (!(state & GDK_SHIFT_MASK)) { //SHIFT disables all snapping, except the angular snapping above + //After all, the user explicitely asked for angular snapping by + //pressing CTRL + /* Snap it along best vector */ + SnapManager &m = SP_EVENT_CONTEXT_DESKTOP(ec)->namedview->snap_manager; + m.setup(SP_EVENT_CONTEXT_DESKTOP(ec), NULL); + m.constrainedSnapReturnByRef( Inkscape::Snapper::SNAPPOINT_NODE, p, Inkscape::Snapper::ConstraintLine(best)); + } } } -void spdc_endpoint_snap_free(SPEventContext const * const ec, NR::Point& p, guint const state) +void spdc_endpoint_snap_free(SPEventContext const * const ec, NR::Point& p, guint const /*state*/) { - /* Shift disables this snap */ - if (state & GDK_SHIFT_MASK) { - return; - } - SnapManager &m = SP_EVENT_CONTEXT_DESKTOP(ec)->namedview->snap_manager; m.setup(SP_EVENT_CONTEXT_DESKTOP(ec), NULL); m.freeSnapReturnByRef(Inkscape::Snapper::SNAPPOINT_NODE, p); -- cgit v1.2.3