/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
focus.c for the Openbox window manager
- Copyright (c) 2004 Mikael Magnusson
+ Copyright (c) 2006 Mikael Magnusson
Copyright (c) 2003 Ben Jansens
This program is free software; you can redistribute it and/or modify
{
/* end cycling if the target disappears */
if (focus_cycle_target == client)
- focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE);
+ focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
}
static Window createWindow(Window parent, gulong mask,
/* in the middle of cycling..? kill it. */
if (focus_cycle_target)
- focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE);
+ focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
old = focus_client;
focus_client = client;
old = focus_client;
- if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) {
+ if ((type == OB_FOCUS_FALLBACK_UNFOCUSING
+ || type == OB_FOCUS_FALLBACK_CLOSED) && old) {
if (old->transient_for) {
gboolean trans = FALSE;
}
}
- if (config_focus_follow && !config_focus_last) {
+ if (config_focus_follow &&
+ (type == OB_FOCUS_FALLBACK_UNFOCUSING || !config_focus_last))
+ {
if ((target = client_under_pointer()))
if (client_normal(target) && client_can_focus(target))
return target;
/* insert before first iconic window */
for (it = focus_order[d];
it && !((ObClient*)it->data)->iconic; it = g_list_next(it));
- g_list_insert_before(focus_order[d], it, c);
+ focus_order[d] = g_list_insert_before(focus_order[d], it, c);
}
}