make cyclewindows action into nextwindow and previouswindow again
This commit is contained in:
parent
2464e59330
commit
70a80ba763
1 changed files with 38 additions and 9 deletions
|
@ -17,6 +17,10 @@ typedef struct {
|
||||||
static gboolean cycling = FALSE;
|
static gboolean cycling = FALSE;
|
||||||
|
|
||||||
static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node);
|
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 void free_func(gpointer options);
|
||||||
static gboolean run_func(ObActionsData *data, gpointer options);
|
static gboolean run_func(ObActionsData *data, gpointer options);
|
||||||
static gboolean i_input_func(guint initial_state,
|
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()
|
void action_cyclewindows_startup()
|
||||||
{
|
{
|
||||||
actions_register("CycleWindows",
|
actions_register("NextWindow", setup_forward_func, free_func,
|
||||||
setup_func,
|
run_func, i_input_func, i_cancel_func);
|
||||||
free_func,
|
actions_register("PreviousWindow", setup_backward_func, free_func,
|
||||||
run_func,
|
run_func, i_input_func, i_cancel_func);
|
||||||
i_input_func,
|
|
||||||
i_cancel_func);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
|
static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
|
||||||
|
@ -44,10 +46,7 @@ static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
|
||||||
|
|
||||||
o = g_new0(Options, 1);
|
o = g_new0(Options, 1);
|
||||||
o->dialog = TRUE;
|
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)))
|
if ((n = parse_find_node("linear", node)))
|
||||||
o->linear = parse_bool(doc, n);
|
o->linear = parse_bool(doc, n);
|
||||||
if ((n = parse_find_node("dialog", node)))
|
if ((n = parse_find_node("dialog", node)))
|
||||||
|
@ -69,6 +68,31 @@ static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
|
||||||
m = parse_find_node("action", m->next);
|
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;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,6 +100,11 @@ static void free_func(gpointer options)
|
||||||
{
|
{
|
||||||
Options *o = 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);
|
g_free(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue