/* stop focus cycling if the given client is a valid focus target,
and so the cycling is being disrupted */
if (focus_cycle_target && ifclient &&
- focus_valid_target(ifclient,
+ focus_valid_target(ifclient, TRUE,
focus_cycle_iconic_windows,
focus_cycle_all_desktops,
focus_cycle_dock_windows,
if (it == NULL) it = g_list_last(list);
}
ft = it->data;
- if (focus_valid_target(ft,
+ if (focus_valid_target(ft, TRUE,
focus_cycle_iconic_windows,
focus_cycle_all_desktops,
focus_cycle_dock_windows,
focus_cycle_all_desktops,
focus_cycle_dock_windows,
focus_cycle_desktop_windows);
- return NULL;
+ return focus_cycle_target;
} else if (ft != focus_cycle_target) {
focus_cycle_target = ft;
done = TRUE;
/* this be mostly ripped from fvwm */
static ObClient *focus_find_directional(ObClient *c, ObDirection dir,
gboolean dock_windows,
- gboolean desktop_windows)
+ gboolean desktop_windows)
{
gint my_cx, my_cy, his_cx, his_cy;
gint offset = 0;
/* the currently selected window isn't interesting */
if (cur == c)
continue;
- if (!focus_valid_target(it->data, FALSE, FALSE, dock_windows,
+ if (!focus_valid_target(it->data, TRUE, FALSE, FALSE, dock_windows,
desktop_windows))
continue;
GList *it;
for (it = focus_order; it; it = g_list_next(it))
- if (focus_valid_target(it->data,
+ if (focus_valid_target(it->data, TRUE,
focus_cycle_iconic_windows,
focus_cycle_all_desktops,
focus_cycle_dock_windows,
focus_cycle_desktop_windows))
ft = it->data;
}
-
+
if (ft && ft != focus_cycle_target) {/* prevents flicker */
focus_cycle_target = ft;
if (!interactive)
focus_cycle_all_desktops,
focus_cycle_dock_windows,
focus_cycle_desktop_windows);
- return NULL;
+ return focus_cycle_target;
done_cycle:
if (done && !cancel) ret = focus_cycle_target;