diff options
| author | Ted Gould <ted@gould.cx> | 2009-11-29 19:01:07 +0000 |
|---|---|---|
| committer | Ted Gould <ted@gould.cx> | 2009-11-29 19:01:07 +0000 |
| commit | 29d3c0b15028e61f176df3a75189bf0959d0d03e (patch) | |
| tree | 727afe596c693a9bdd098d72618abd9ceb0d1969 /src/node-context.cpp | |
| parent | Add the build dir dbus directory to grab some headerfiles for distcheck. (diff) | |
| parent | hopefully fix build on linux (diff) | |
| download | inkscape-29d3c0b15028e61f176df3a75189bf0959d0d03e.tar.gz inkscape-29d3c0b15028e61f176df3a75189bf0959d0d03e.zip | |
Merging in from trunk
(bzr r8254.1.37)
Diffstat (limited to 'src/node-context.cpp')
| -rw-r--r-- | src/node-context.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/node-context.cpp b/src/node-context.cpp index 6ad7b85d4..7efa57290 100644 --- a/src/node-context.cpp +++ b/src/node-context.cpp @@ -117,6 +117,11 @@ sp_node_context_dispose(GObject *object) SPEventContext *ec = SP_EVENT_CONTEXT(object); ec->enableGrDrag(false); + + if (nc->grabbed) { + sp_canvas_item_ungrab(nc->grabbed, GDK_CURRENT_TIME); + nc->grabbed = NULL; + } nc->sel_changed_connection.disconnect(); nc->sel_changed_connection.~connection(); @@ -300,8 +305,6 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) nc->remove_flash_counter--; } - sp_event_context_snap_window_open(event_context, false); // Just put the snap window open, bluntly. Will be closed when we have left the context - gint ret = FALSE; switch (event->type) { case GDK_BUTTON_PRESS: @@ -329,6 +332,17 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) event->button.y); Geom::Point const button_dt(desktop->w2d(button_w)); Inkscape::Rubberband::get(desktop)->start(desktop, button_dt); + + if (nc->grabbed) { + sp_canvas_item_ungrab(nc->grabbed, event->button.time); + nc->grabbed = NULL; + } + + sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), + GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK, + NULL, event->button.time); + nc->grabbed = SP_CANVAS_ITEM(desktop->acetate); + nc->current_state = SP_NODE_CONTEXT_INACTIVE; desktop->updateNow(); ret = TRUE; @@ -462,6 +476,10 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) desktop->updateNow(); } Inkscape::Rubberband::get(desktop)->stop(); + if (nc->grabbed) { + sp_canvas_item_ungrab(nc->grabbed, event->button.time); + nc->grabbed = NULL; + } ret = TRUE; break; } @@ -485,6 +503,12 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) } ret = TRUE; Inkscape::Rubberband::get(desktop)->stop(); + + if (nc->grabbed) { + sp_canvas_item_ungrab(nc->grabbed, event->button.time); + nc->grabbed = NULL; + } + desktop->updateNow(); nc->rb_escaped = false; nc->drag = FALSE; |
