X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fdirectionalwindows.c;h=0ad464b735837bc6e18b3b2030f5c180442e0ef4;hb=f55caaf6a003c8e9dece297e0e1aca89a1ee99ef;hp=7ede33339314e948cc8f615ed944f0533e33b318;hpb=096dad0c6c027100494ede811b33cb8558d32e25;p=chaz%2Fopenbox diff --git a/openbox/actions/directionalwindows.c b/openbox/actions/directionalwindows.c index 7ede3333..0ad464b7 100644 --- a/openbox/actions/directionalwindows.c +++ b/openbox/actions/directionalwindows.c @@ -135,7 +135,7 @@ static gpointer setup_func(xmlNodePtr node) xmlNodePtr n; Options *o; - o = g_new0(Options, 1); + o = g_slice_new0(Options); o->dialog = TRUE; o->bar = TRUE; @@ -225,7 +225,7 @@ static void free_func(gpointer options) o->actions = g_slist_delete_link(o->actions, o->actions); } - g_free(o); + g_slice_free(Options, o); } static gboolean run_func(ObActionsData *data, gpointer options) @@ -259,13 +259,14 @@ static gboolean i_input_func(guint initial_state, gpointer options, gboolean *used) { - guint mods; + guint mods, initial_mods; + initial_mods = obt_keyboard_only_modmasks(initial_state); mods = obt_keyboard_only_modmasks(e->xkey.state); if (e->type == KeyRelease) { /* remove from the state the mask of the modifier key being released, if it is a modifier key being released that is */ - mods &= ~obt_keyboard_keycode_to_modmask(e->xkey.keycode); + mods &= ~obt_keyboard_keyevent_to_modmask(e); } if (e->type == KeyPress) { @@ -278,14 +279,13 @@ static gboolean i_input_func(guint initial_state, } /* There were no modifiers and they pressed enter */ - else if (sym == XK_Return && !initial_state) { + else if ((sym == XK_Return || sym == XK_KP_Enter) && !initial_mods) { end_cycle(FALSE, e->xkey.state, options); return FALSE; } } /* They released the modifiers */ - else if (e->type == KeyRelease && initial_state && !(mods & initial_state)) - { + else if (e->type == KeyRelease && initial_mods && !(mods & initial_mods)) { end_cycle(FALSE, e->xkey.state, options); return FALSE; }