for (it = ft->group->members; it; it = g_slist_next(it)) {
ObClient *c = it->data;
/* check that it's not a helper window to avoid infinite recursion */
- if (c != ft && !client_helper(c) &&
+ if (c != ft && c->type == OB_CLIENT_TYPE_NORMAL &&
focus_cycle_target_valid(c, iconic_windows, all_desktops, FALSE,
FALSE))
{
ok = ok &&
((client_normal(ft) && !client_helper(ft))
||
- /* helper windows are valid targets it... */
+ /* helper windows are valid targets if... */
(client_helper(ft) &&
/* ...a window in its group already has focus ... */
((focus_client && ft->group == focus_client->group) ||
static ObClient *first = NULL;
ObClient *ft = NULL;
- if (!interactive)
- return;
-
if (cancel) {
focus_cycle_target = NULL;
goto done_cycle;
- } else if (done)
+ } else if (done && interactive)
goto done_cycle;
if (!focus_order)
ft = it->data;
}
- if (ft) {
- if (ft != focus_cycle_target) {/* prevents flicker */
- focus_cycle_target = ft;
- focus_cycle_draw_indicator(ft);
- }
+ if (ft && ft != focus_cycle_target) {/* prevents flicker */
+ focus_cycle_target = ft;
+ if (!interactive)
+ goto done_cycle;
+ focus_cycle_draw_indicator(ft);
}
if (focus_cycle_target && dialog)
/* same arguments as focus_target_valid */