X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fdirectionalwindows.c;h=3d997aef2f5e6c426481cfc8ed451b615236cb86;hb=50d662681160c309ea86268c0d05794b87b75593;hp=c5c25c11329b0aa7768df61a60f0c55597069fab;hpb=0dc7eca4cdfff6425e19a0bace0f9ae8834d04e8;p=chaz%2Fopenbox diff --git a/openbox/actions/directionalwindows.c b/openbox/actions/directionalwindows.c index c5c25c11..3d997aef 100644 --- a/openbox/actions/directionalwindows.c +++ b/openbox/actions/directionalwindows.c @@ -33,12 +33,63 @@ static void i_cancel_func(gpointer options); static void end_cycle(gboolean cancel, guint state, Options *o); +/* 3.4-compatibility */ +static gpointer setup_north_cycle_func(xmlNodePtr node); +static gpointer setup_south_cycle_func(xmlNodePtr node); +static gpointer setup_east_cycle_func(xmlNodePtr node); +static gpointer setup_west_cycle_func(xmlNodePtr node); +static gpointer setup_northwest_cycle_func(xmlNodePtr node); +static gpointer setup_northeast_cycle_func(xmlNodePtr node); +static gpointer setup_southwest_cycle_func(xmlNodePtr node); +static gpointer setup_southeast_cycle_func(xmlNodePtr node); +static gpointer setup_north_target_func(xmlNodePtr node); +static gpointer setup_south_target_func(xmlNodePtr node); +static gpointer setup_east_target_func(xmlNodePtr node); +static gpointer setup_west_target_func(xmlNodePtr node); +static gpointer setup_northwest_target_func(xmlNodePtr node); +static gpointer setup_northeast_target_func(xmlNodePtr node); +static gpointer setup_southwest_target_func(xmlNodePtr node); +static gpointer setup_southeast_target_func(xmlNodePtr node); + void action_directionalwindows_startup(void) { actions_register("DirectionalCycleWindows", setup_cycle_func, free_func, run_func, i_input_func, i_cancel_func); actions_register("DirectionalTargetWindow", setup_target_func, free_func, run_func, NULL, NULL); + /* 3.4-compatibility */ + actions_register("DirectionalFocusNorth", setup_north_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalFocusSouth", setup_south_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalFocusWest", setup_west_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalFocusEast", setup_east_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalFocusNorthWest", setup_northwest_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalFocusNorthEast", setup_northeast_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalFocusSouthWest", setup_southwest_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalFocusSouthEast", setup_southeast_cycle_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetNorth", setup_north_target_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetSouth", setup_south_target_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetWest", setup_west_target_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetEast", setup_east_target_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetNorthWest", setup_northwest_target_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetNorthEast", setup_northeast_target_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetSouthWest", setup_southwest_target_func, + free_func, run_func, i_input_func, i_cancel_func); + actions_register("DirectionalTargetSouthEast", setup_southeast_target_func, + free_func, run_func, i_input_func, i_cancel_func); } static gpointer setup_func(xmlNodePtr node) @@ -91,7 +142,7 @@ static gpointer setup_func(xmlNodePtr node) m = obt_parse_find_node(n->children, "action"); while (m) { ObActionsAct *action = actions_parse(m); - if (action) o->actions = g_slist_prepend(o->actions, action); + if (action) o->actions = g_slist_append(o->actions, action); m = obt_parse_find_node(m->next, "action"); } } @@ -165,13 +216,13 @@ static gboolean i_input_func(guint initial_state, { if (e->type == KeyPress) { /* Escape cancels no matter what */ - if (e->xkey.keycode == ob_keycode(OB_KEY_ESCAPE)) { + if (ob_keycode_match(e->xkey.keycode, OB_KEY_ESCAPE)) { end_cycle(TRUE, e->xkey.state, options); return FALSE; } /* There were no modifiers and they pressed enter */ - else if (e->xkey.keycode == ob_keycode(OB_KEY_RETURN) && + else if (ob_keycode_match(e->xkey.keycode, OB_KEY_RETURN) && !initial_state) { end_cycle(FALSE, e->xkey.state, options); @@ -216,3 +267,117 @@ static void end_cycle(gboolean cancel, guint state, Options *o) stacking_restore(); } + +/* 3.4-compatibility */ +static gpointer setup_north_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_NORTH; + return o; +} + +static gpointer setup_south_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_SOUTH; + return o; +} + +static gpointer setup_east_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_EAST; + return o; +} + +static gpointer setup_west_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_WEST; + return o; +} + +static gpointer setup_northwest_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_NORTHWEST; + return o; +} + +static gpointer setup_northeast_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_EAST; + return o; +} + +static gpointer setup_southwest_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_SOUTHWEST; + return o; +} + +static gpointer setup_southeast_cycle_func(xmlNodePtr node) +{ + Options *o = setup_cycle_func(node); + o->direction = OB_DIRECTION_SOUTHEAST; + return o; +} + +static gpointer setup_north_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_NORTH; + return o; +} + +static gpointer setup_south_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_SOUTH; + return o; +} + +static gpointer setup_east_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_EAST; + return o; +} + +static gpointer setup_west_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_WEST; + return o; +} + +static gpointer setup_northwest_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_NORTHWEST; + return o; +} + +static gpointer setup_northeast_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_NORTHEAST; + return o; +} + +static gpointer setup_southwest_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_SOUTHWEST; + return o; +} + +static gpointer setup_southeast_target_func(xmlNodePtr node) +{ + Options *o = setup_target_func(node); + o->direction = OB_DIRECTION_SOUTHEAST; + return o; +} +