X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fcyclewindows.c;h=5354f087c55254f5fdd5fd700a63e88a93ac6cc7;hb=8f37a97a4cc29d35f6a632ef2f71ac760e301ee5;hp=70f146af7e76cad47e4fad7785b4e0793372a253;hpb=fdabb69f4f25596df972caa76c85c2aeba26226e;p=chaz%2Fopenbox diff --git a/openbox/actions/cyclewindows.c b/openbox/actions/cyclewindows.c index 70f146af..5354f087 100644 --- a/openbox/actions/cyclewindows.c +++ b/openbox/actions/cyclewindows.c @@ -8,13 +8,13 @@ typedef struct { gboolean linear; - gboolean dialog; gboolean dock_windows; gboolean desktop_windows; gboolean all_desktops; gboolean forward; gboolean bar; gboolean raise; + ObFocusCyclePopupMode dialog_mode; GSList *actions; } Options; @@ -47,13 +47,17 @@ static gpointer setup_func(xmlNodePtr node) Options *o; o = g_new0(Options, 1); - o->dialog = TRUE; o->bar = TRUE; + o->dialog_mode = OB_FOCUS_CYCLE_POPUP_MODE_LIST; if ((n = obt_parse_find_node(node, "linear"))) o->linear = obt_parse_node_bool(n); - if ((n = obt_parse_find_node(node, "dialog"))) - o->dialog = obt_parse_node_bool(n); + if ((n = obt_parse_find_node(node, "dialog"))) { + if (obt_parse_node_contains(n, "none")) + o->dialog_mode = OB_FOCUS_CYCLE_POPUP_MODE_NONE; + else if (obt_parse_node_contains(n, "icons")) + o->dialog_mode = OB_FOCUS_CYCLE_POPUP_MODE_ICONS; + } if ((n = obt_parse_find_node(node, "bar"))) o->bar = obt_parse_node_bool(n); if ((n = obt_parse_find_node(node, "raise"))) @@ -68,10 +72,10 @@ static gpointer setup_func(xmlNodePtr node) if ((n = obt_parse_find_node(node, "finalactions"))) { xmlNodePtr m; - m = obt_parse_find_node(n->xmlChildrenNode, "action"); + 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"); } } @@ -125,12 +129,12 @@ static gboolean run_func(ObActionsData *data, gpointer options) o->linear, TRUE, o->bar, - o->dialog, + o->dialog_mode, FALSE, FALSE); cycling = TRUE; stacking_restore(); - if (o->raise) stacking_temp_raise(CLIENT_AS_WINDOW(ft)); + if (o->raise && ft) stacking_temp_raise(CLIENT_AS_WINDOW(ft)); return TRUE; } @@ -185,7 +189,7 @@ static void end_cycle(gboolean cancel, guint state, Options *o) o->linear, TRUE, o->bar, - o->dialog, + o->dialog_mode, TRUE, cancel); cycling = FALSE;