X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fevent-context.cpp;h=e63df0d2f5eedff819df23361987fe696f2d5c99;hb=35957e2d2b07f0179430b23187555e56f82c4597;hp=d91a064bad17a234ac6822825927317fe1b63129;hpb=d5f9e33ea6d445cf524767a1174b1aab10d8a45e;p=inkscape.git diff --git a/src/event-context.cpp b/src/event-context.cpp index d91a064ba..e63df0d2f 100644 --- a/src/event-context.cpp +++ b/src/event-context.cpp @@ -369,7 +369,7 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context, } else { panning = 2; sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), - GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK, + GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK, NULL, event->button.time-1); } ret = TRUE; @@ -381,7 +381,7 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context, event->button.y); panning = 3; sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), - GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK, + GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK, NULL, event->button.time); ret = TRUE; } else { @@ -452,6 +452,7 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context, case GDK_BUTTON_RELEASE: if (within_tolerance && (panning || zoom_rb)) { dontgrab ++; + zoom_rb = 0; NR::Point const event_w(event->button.x, event->button.y); NR::Point const event_dt(desktop->w2d(event_w)); double const zoom_power = ( (event->button.state & GDK_SHIFT_MASK) @@ -459,11 +460,13 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context, desktop->zoom_relative_keep_point(event_dt, pow(zoom_inc, zoom_power)); gtk_timeout_add(250, (GtkFunction) grab_allow_again, NULL); + desktop->updateNow(); } if (panning == event->button.button) { panning = 0; sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), event->button.time); + desktop->updateNow(); ret = TRUE; } else if (zoom_rb == event->button.button) { zoom_rb = 0; @@ -477,9 +480,13 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context, break; case GDK_KEY_PRESS: switch (get_group0_keyval(&event->key)) { + // GDK insists on stealing these keys (F1 for no idea what, tab for cycling widgets + // in the editing window). So we resteal them back and run our regular shortcut + // invoker on them. unsigned int shortcut; + case GDK_Tab: + case GDK_ISO_Left_Tab: case GDK_F1: - /* Grab it away from Gtk */ shortcut = get_group0_keyval(&event->key); if (event->key.state & GDK_SHIFT_MASK) shortcut |= SP_SHORTCUT_SHIFT_MASK; @@ -490,22 +497,6 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context, ret = sp_shortcut_invoke(shortcut, desktop); break; - case GDK_Tab: // disable tab/shift-tab which cycle widget focus - case GDK_ISO_Left_Tab: // they will get different functions - if (!(MOD__CTRL_ONLY || (MOD__CTRL && MOD__SHIFT))) { - ret = TRUE; - } else { - /* Grab it away from Gtk */ - shortcut = get_group0_keyval(&event->key); - if (event->key.state & GDK_SHIFT_MASK) - shortcut |= SP_SHORTCUT_SHIFT_MASK; - if (event->key.state & GDK_CONTROL_MASK) - shortcut |= SP_SHORTCUT_CONTROL_MASK; - if (event->key.state & GDK_MOD1_MASK) - shortcut |= SP_SHORTCUT_ALT_MASK; - ret = sp_shortcut_invoke(shortcut, desktop); - } - break; case GDK_W: case GDK_w: case GDK_F4: @@ -804,8 +795,8 @@ sp_event_context_deactivate(SPEventContext *ec) g_return_if_fail(ec != NULL); g_return_if_fail(SP_IS_EVENT_CONTEXT(ec)); - if (((SPEventContextClass *) G_OBJECT_GET_CLASS(ec))->activate) - ((SPEventContextClass *) G_OBJECT_GET_CLASS(ec))->activate(ec); + if (((SPEventContextClass *) G_OBJECT_GET_CLASS(ec))->deactivate) + ((SPEventContextClass *) G_OBJECT_GET_CLASS(ec))->deactivate(ec); } /**