*/
focus_set_client(NULL);
- if (!config_focus_last && config_focus_follow)
- if (focus_under_pointer())
- return;
-
if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) {
/* try for transient relations */
if (old->transient_for) {
}
}
+ if (!config_focus_last && config_focus_follow)
+ if (focus_under_pointer())
+ return;
+
#if 0
/* try for group relations */
if (old->group) {
for (it = focus_order[screen_desktop]; it != NULL; it = it->next)
if (type != OB_FOCUS_FALLBACK_UNFOCUSING || it->data != old)
- if (client_normal(it->data) &&
- /* dont fall back to 'anonymous' fullscreen windows. theres no
- checks for this is in transient/group fallbacks, so they can
- be fallback targets there. */
- !((ObClient*)it->data)->fullscreen &&
- client_can_focus(it->data)) {
+ if (client_normal(it->data) && client_can_focus(it->data)) {
gboolean r = client_focus(it->data);
assert(r);
return;
static void popup_cycle(ObClient *c, gboolean show)
{
- if (!show || !config_dialog_focus) {
+ if (!show) {
icon_popup_hide(focus_cycle_popup);
} else {
Rect *a;
focus an iconic window, but we want to be able to, so we just check
if the focus flags on the window allow it, and its on the current
desktop */
- return (ft->transients == NULL && client_normal(ft) &&
+ return (ft == client_focus_target(ft) && client_normal(ft) &&
((ft->can_focus || ft->focus_notify) &&
!ft->skip_taskbar &&
(ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL)));
it = it->prev;
if (it == NULL) it = g_list_last(list);
}
- /*ft = client_focus_target(it->data);*/
ft = it->data;
if (valid_focus_target(ft)) {
if (ft != focus_cycle_target) { /* prevents flicker */