From a50bbcf0ee5b96e54cc956339a427bc3330df228 Mon Sep 17 00:00:00 2001 From: Diederik van Lierop Date: Mon, 9 Mar 2009 20:19:01 +0000 Subject: Fix #338838, in which zooming and panning with the middle mouse button made Inkscape inrespronsive (bzr r7461) --- src/node-context.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/node-context.cpp') diff --git a/src/node-context.cpp b/src/node-context.cpp index 57af59bd4..f40d1b7fc 100644 --- a/src/node-context.cpp +++ b/src/node-context.cpp @@ -116,8 +116,6 @@ sp_node_context_dispose(GObject *object) SPNodeContext *nc = SP_NODE_CONTEXT(object); SPEventContext *ec = SP_EVENT_CONTEXT(object); - sp_canvas_set_snap_delay_active(ec->desktop->canvas, false); - ec->enableGrDrag(false); nc->sel_changed_connection.disconnect(); @@ -175,8 +173,6 @@ sp_node_context_setup(SPEventContext *ec) nc->_node_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack()); ec->shape_editor->update_statusbar(); - - sp_canvas_set_snap_delay_active(ec->desktop->canvas, true); } static void @@ -298,7 +294,8 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (!(event->button.state & GDK_SHIFT_MASK)) { if (!nc->drag) { if (se->has_nodepath() && selection->single() /* && item_over */) { - // save drag origin + sp_canvas_set_snap_delay_active(desktop->canvas, true); + // save drag origin bool over_stroke = se->is_over_stroke(Geom::Point(event->button.x, event->button.y), true); //only dragging curves if (over_stroke) { @@ -412,7 +409,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (over_stroke || nc->added_node) { switch (event->type) { case GDK_BUTTON_RELEASE: - if (event->button.state & GDK_CONTROL_MASK && event->button.state & GDK_MOD1_MASK) { + if (event->button.state & GDK_CONTROL_MASK && event->button.state & GDK_MOD1_MASK) { //add a node se->add_node_near_point(); } else { @@ -428,11 +425,13 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) } desktop->updateNow(); } + sp_canvas_set_snap_delay_active(desktop->canvas, false); break; case GDK_2BUTTON_PRESS: //add a node se->add_node_near_point(); nc->added_node = true; + sp_canvas_set_snap_delay_active(desktop->canvas, false); break; default: break; @@ -450,16 +449,16 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) } } if (event->type == GDK_BUTTON_RELEASE) { - event_context->xp = event_context->yp = 0; + event_context->xp = event_context->yp = 0; if (event->button.button == 1) { - Geom::OptRect b = Inkscape::Rubberband::get(desktop)->getRectangle(); + Geom::OptRect b = Inkscape::Rubberband::get(desktop)->getRectangle(); if (se->hits_curve() && !event_context->within_tolerance) { //drag curve se->finish_drag(); } else if (b && !event_context->within_tolerance) { // drag to select se->select_rect(*b, event->button.state & GDK_SHIFT_MASK); } else { - if (!(nc->rb_escaped)) { // unless something was cancelled + if (!(nc->rb_escaped)) { // unless something was canceled if (se->has_selection()) se->deselect(); else -- cgit v1.2.3