focus_cycle_all_desktops,
focus_cycle_dock_windows,
focus_cycle_desktop_windows);
- return;
+ return focus_cycle_target;
} else if (ft != focus_cycle_target) {
focus_cycle_target = ft;
done = TRUE;
return best_client;
}
-void focus_directional_cycle(ObDirection dir, gboolean dock_windows,
- gboolean desktop_windows, gboolean interactive,
- gboolean dialog, gboolean done, gboolean cancel)
+ObClient* focus_directional_cycle(ObDirection dir, gboolean dock_windows,
+ gboolean desktop_windows,
+ gboolean interactive,
+ gboolean dialog,
+ gboolean done, gboolean cancel)
{
static ObClient *first = NULL;
ObClient *ft = NULL;
+ ObClient *ret = NULL;
if (cancel) {
focus_cycle_target = NULL;
focus_cycle_all_desktops,
focus_cycle_dock_windows,
focus_cycle_desktop_windows);
- return;
+ return focus_cycle_target;
done_cycle:
- if (done && focus_cycle_target)
- client_activate(focus_cycle_target, FALSE, TRUE);
+ if (done && !cancel) ret = focus_cycle_target;
first = NULL;
focus_cycle_target = NULL;
focus_cycle_draw_indicator(NULL);
focus_cycle_popup_single_hide();
- return;
+ return ret;
}