diff options
Diffstat (limited to 'src/display/snap-indicator.cpp')
| -rw-r--r-- | src/display/snap-indicator.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/display/snap-indicator.cpp b/src/display/snap-indicator.cpp index 3ee00c9d1..e08fc06d6 100644 --- a/src/display/snap-indicator.cpp +++ b/src/display/snap-indicator.cpp @@ -15,6 +15,7 @@ #include "desktop.h" #include "desktop-handles.h" +#include "sp-namedview.h" #include "display/sodipodi-ctrl.h" #include "knot.h" @@ -22,8 +23,8 @@ namespace Inkscape { namespace Display { SnapIndicator::SnapIndicator(SPDesktop * desktop) - : tempitem(NULL), - desktop(desktop) + : _tempitem(NULL), + _desktop(desktop) { } @@ -37,11 +38,16 @@ void SnapIndicator::set_new_snappoint(Inkscape::SnappedPoint const p) { remove_snappoint(); - - bool enabled = true; // TODO add preference for snap indicator. - if (enabled) { + + g_assert(_desktop != NULL); + SPNamedView *nv = sp_desktop_namedview(_desktop); + + if (nv->snapindicator) { // TODO add many different kinds of snap indicator :-) - SPCanvasItem * canvasitem = sp_canvas_item_new( sp_desktop_tempgroup (desktop), + // For this we should use p->getTarget() to find out what has snapped + // and adjust the shape of the snapindicator accordingly, e.g. a cross + // when snapping to an intersection, a circle when snapping to a node, etc. + SPCanvasItem * canvasitem = sp_canvas_item_new( sp_desktop_tempgroup (_desktop), SP_TYPE_CTRL, "anchor", GTK_ANCHOR_CENTER, "size", 10.0, @@ -49,20 +55,19 @@ SnapIndicator::set_new_snappoint(Inkscape::SnappedPoint const p) "stroke_color", 0xf000f0ff, "mode", SP_KNOT_MODE_XOR, "shape", SP_KNOT_SHAPE_CROSS, - NULL ); - + NULL ); SP_CTRL(canvasitem)->moveto(p.getPoint()); - tempitem = desktop->add_temporary_canvasitem(canvasitem, 1000); // TODO add preference for snap indicator timeout + _tempitem = _desktop->add_temporary_canvasitem(canvasitem, 1000); // TODO add preference for snap indicator timeout } } void SnapIndicator::remove_snappoint() { - if (tempitem) { - desktop->remove_temporary_canvasitem(tempitem); - tempitem = NULL; + if (_tempitem) { + _desktop->remove_temporary_canvasitem(_tempitem); + _tempitem = NULL; } } |
