From 99c82c93cb8e9d023cb65f5e0f6ea357db5092ba Mon Sep 17 00:00:00 2001 From: Diederik van Lierop Date: Sun, 21 Feb 2010 10:01:33 +0100 Subject: Make sure that guides always snap correctly when dropping them, and improve perseverance of snap-indicator (bzr r9103) --- src/display/snap-indicator.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/display/snap-indicator.cpp') diff --git a/src/display/snap-indicator.cpp b/src/display/snap-indicator.cpp index b135dd9fe..c0ed322e4 100644 --- a/src/display/snap-indicator.cpp +++ b/src/display/snap-indicator.cpp @@ -6,7 +6,7 @@ * Diederik van Lierop * * Copyright (C) Johan Engelen 2009 - * Copyright (C) Diederik van Lierop 2009 + * Copyright (C) Diederik van Lierop 2010 * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -31,6 +31,7 @@ SnapIndicator::SnapIndicator(SPDesktop * desktop) _snaptarget_tooltip(NULL), _snaptarget_bbox(NULL), _snapsource(NULL), + _snaptarget_is_presnap(false), _desktop(desktop) { } @@ -240,6 +241,7 @@ SnapIndicator::set_new_snaptarget(Inkscape::SnappedPoint const &p, bool pre_snap SP_CTRL(canvasitem)->moveto(p.getPoint()); _snaptarget = _desktop->add_temporary_canvasitem(canvasitem, timeout_val); + _snaptarget_is_presnap = pre_snap; // Display the tooltip, which reveals the type of snap source and the type of snap target gchar *tooltip_str = g_strconcat(source_name, _(" to "), target_name, NULL); @@ -271,11 +273,16 @@ SnapIndicator::set_new_snaptarget(Inkscape::SnappedPoint const &p, bool pre_snap } void -SnapIndicator::remove_snaptarget() +SnapIndicator::remove_snaptarget(bool only_if_presnap) { + if (only_if_presnap && !_snaptarget_is_presnap) { + return; + } + if (_snaptarget) { _desktop->remove_temporary_canvasitem(_snaptarget); _snaptarget = NULL; + _snaptarget_is_presnap = false; } if (_snaptarget_tooltip) { -- cgit v1.2.3