all repos — openbox @ 70a80ba763f804d3271d85c66234bb1b368f2aa4

openbox fork - make it a bit more like ryudo

make cyclewindows action into nextwindow and previouswindow again
Dana Jansens danakj@orodu.net
commit

70a80ba763f804d3271d85c66234bb1b368f2aa4

parent

2464e593300f677ed5dc953a36f25b84edfd07ae

1 files changed, 38 insertions(+), 9 deletions(-)

jump to
M openbox/actions/cyclewindows.copenbox/actions/cyclewindows.c

@@ -17,6 +17,10 @@

static gboolean cycling = FALSE; static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); +static gpointer setup_forward_func(ObParseInst *i, xmlDocPtr doc, + xmlNodePtr node); +static gpointer setup_backward_func(ObParseInst *i, xmlDocPtr doc, + xmlNodePtr node); static void free_func(gpointer options); static gboolean run_func(ObActionsData *data, gpointer options); static gboolean i_input_func(guint initial_state,

@@ -29,12 +33,10 @@ static void end_cycle(gboolean cancel, guint state, Options *o);

void action_cyclewindows_startup() { - actions_register("CycleWindows", - setup_func, - free_func, - run_func, - i_input_func, - i_cancel_func); + actions_register("NextWindow", setup_forward_func, free_func, + run_func, i_input_func, i_cancel_func); + actions_register("PreviousWindow", setup_backward_func, free_func, + run_func, i_input_func, i_cancel_func); } static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)

@@ -44,10 +46,7 @@ Options *o;

o = g_new0(Options, 1); o->dialog = TRUE; - o->forward = TRUE; - if ((n = parse_find_node("forward", node))) - o->forward = parse_bool(doc, n); if ((n = parse_find_node("linear", node))) o->linear = parse_bool(doc, n); if ((n = parse_find_node("dialog", node)))

@@ -69,12 +68,42 @@ if (action) o->actions = g_slist_prepend(o->actions, action);

m = parse_find_node("action", m->next); } } + else { + o->actions = g_slist_prepend(o->actions, + actions_parse_string("Focus")); + o->actions = g_slist_prepend(o->actions, + actions_parse_string("Raise")); + o->actions = g_slist_prepend(o->actions, + actions_parse_string("Unshade")); + } + + return o; +} + +static gpointer setup_forward_func(ObParseInst *i, xmlDocPtr doc, + xmlNodePtr node) +{ + Options *o = setup_func(i, doc, node); + o->forward = TRUE; + return o; +} + +static gpointer setup_backward_func(ObParseInst *i, xmlDocPtr doc, + xmlNodePtr node) +{ + Options *o = setup_func(i, doc, node); + o->forward = FALSE; return o; } static void free_func(gpointer options) { Options *o = options; + + while (o->actions) { + actions_act_unref(o->actions->data); + o->actions = g_slist_delete_link(o->actions, o->actions); + } g_free(o); }