diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2009-03-09 20:19:01 +0000 |
|---|---|---|
| committer | dvlierop2 <dvlierop2@users.sourceforge.net> | 2009-03-09 20:19:01 +0000 |
| commit | a50bbcf0ee5b96e54cc956339a427bc3330df228 (patch) | |
| tree | ecacf9e73822a8432a5d73af531a93d78f62aa06 /src/knot.cpp | |
| parent | Yet another round of translation update (diff) | |
| download | inkscape-a50bbcf0ee5b96e54cc956339a427bc3330df228.tar.gz inkscape-a50bbcf0ee5b96e54cc956339a427bc3330df228.zip | |
Fix #338838, in which zooming and panning with the middle mouse button made Inkscape inrespronsive
(bzr r7461)
Diffstat (limited to 'src/knot.cpp')
| -rw-r--r-- | src/knot.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/knot.cpp b/src/knot.cpp index cf1a3e944..fab622bbd 100644 --- a/src/knot.cpp +++ b/src/knot.cpp @@ -285,7 +285,9 @@ void sp_knot_start_dragging(SPKnot *knot, Geom::Point const &p, gint x, gint y, */ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot) { - g_assert(knot != NULL); + static bool snap_delay_temporarily_active = false; + + g_assert(knot != NULL); g_assert(SP_IS_KNOT(knot)); /* Run client universal event handler, if present */ @@ -316,6 +318,10 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot if (event->button.button == 1 && !knot->desktop->event_context->space_panning) { Geom::Point const p = knot->desktop->w2d(Geom::Point(event->button.x, event->button.y)); sp_knot_start_dragging(knot, p, (gint) event->button.x, (gint) event->button.y, event->button.time); + if (knot->desktop->canvas->context_snap_delay_active == false) { + sp_canvas_set_snap_delay_active(knot->desktop->canvas, true); + snap_delay_temporarily_active = true; + } consumed = TRUE; } break; @@ -347,6 +353,13 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot grabbed = FALSE; moved = FALSE; consumed = TRUE; + + if (snap_delay_temporarily_active) { + if (knot->desktop->canvas->context_snap_delay_active == true) { + sp_canvas_set_snap_delay_active(knot->desktop->canvas, false); + } + snap_delay_temporarily_active = false; + } } } break; @@ -411,7 +424,6 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot grabbed = FALSE; moved = FALSE; - consumed = TRUE; break; case GDK_KEY_PRESS: // keybindings for knot @@ -435,6 +447,10 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot } grabbed = FALSE; moved = FALSE; + if (snap_delay_temporarily_active) { + sp_canvas_set_snap_delay_active(knot->desktop->canvas, false); + snap_delay_temporarily_active = false; + } break; default: consumed = FALSE; @@ -568,7 +584,7 @@ void sp_knot_set_position(SPKnot *knot, Geom::Point const &p, guint state) } /** - * Move knot to new position, without emitting a MOVED signal. + * Move knot to new position, without emitting a MOVED signal. */ void sp_knot_moveto(SPKnot *knot, Geom::Point const &p) { |
