GSList *it;
ObClient *ret;
- for (it = c->transients; it; it = it->next) {
+ for (it = c->transients; it; it = g_slist_next(it)) {
if (it->data == top) return NULL;
ret = find_transient_recursive(it->data, top, skip);
if (ret && ret != skip && client_normal(ret)) return ret;
/* try for transient relations */
if (trans) {
if (old->transient_for == OB_TRAN_GROUP) {
- for (it = focus_order[screen_desktop]; it; it = it->next) {
+ for (it = focus_order[screen_desktop]; it;
+ it = g_list_next(it))
+ {
GSList *sit;
- for (sit = old->group->members; sit; sit = sit->next)
+ for (sit = old->group->members; sit;
+ sit = g_slist_next(sit))
+ {
if (sit->data == it->data)
if ((target =
focus_fallback_transient(sit->data, old)))
return target;
+ }
}
} else {
if ((target =
if (old->group) {
GSList *sit;
- for (it = focus_order[screen_desktop]; it != NULL; it = it->next)
- for (sit = old->group->members; sit; sit = sit->next)
+ for (it = focus_order[screen_desktop]; it; it = g_list_next(it))
+ for (sit = old->group->members; sit; sit = g_slist_next(sit))
if (sit->data == it->data)
if (sit->data != old && client_normal(sit->data))
if (client_can_focus(sit->data))
}
#endif
- for (it = focus_order[screen_desktop]; it != NULL; it = it->next)
+ for (it = focus_order[screen_desktop]; it; it = g_list_next(it))
if (type != OB_FOCUS_FALLBACK_UNFOCUSING || it->data != old)
if (client_normal(it->data) && client_can_focus(it->data))
return it->data;
} else {
Rect *a;
ObClient *p = c;
- gchar *title;
+ gchar *title = NULL;
a = screen_physical_area_monitor(0);
icon_popup_position(focus_cycle_popup, CenterGravity,
while (p->transient_for && p->transient_for != OB_TRAN_GROUP)
p = p->transient_for;
- if (p == c)
- title = NULL;
- else
+/*
+ if (p != c)
title = g_strconcat((c->iconic ? c->icon_title : c->title),
" - ",
(p->iconic ? p->icon_title : p->title),
NULL);
+*/
icon_popup_show(focus_cycle_popup,
(title ? title :
ft->type == OB_CLIENT_TYPE_UTILITY))) &&
((ft->can_focus || ft->focus_notify) &&
!ft->skip_taskbar &&
- (ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL)))
+ (ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL)) &&
+ ft == client_focus_target(ft))
+ return TRUE;
+/*
{
GSList *it;
}
return TRUE;
}
+*/
return FALSE;
}
d = c->desktop;
if (d == DESKTOP_ALL) {
for (i = 0; i < screen_num_desktops; ++i) {
+ g_assert(!g_list_find(focus_order[i], c));
if (focus_order[i] && ((ObClient*)focus_order[i]->data)->iconic)
focus_order[i] = g_list_insert(focus_order[i], c, 0);
else
focus_order[i] = g_list_insert(focus_order[i], c, 1);
}
- } else
- if (focus_order[d] && ((ObClient*)focus_order[d]->data)->iconic)
+ } else {
+ g_assert(!g_list_find(focus_order[d], c));
+ if (focus_order[d] && ((ObClient*)focus_order[d]->data)->iconic)
focus_order[d] = g_list_insert(focus_order[d], c, 0);
else
focus_order[d] = g_list_insert(focus_order[d], c, 1);
+ }
}
}
/* insert before first iconic window */
for (it = focus_order[d];
- it && !((ObClient*)it->data)->iconic; it = it->next);
+ it && !((ObClient*)it->data)->iconic; it = g_list_next(it));
focus_order[d] = g_list_insert_before(focus_order[d], it, c);
}
}
/* insert before first iconic window */
for (it = focus_order[d];
- it && !((ObClient*)it->data)->iconic; it = it->next);
+ it && !((ObClient*)it->data)->iconic; it = g_list_next(it));
g_list_insert_before(focus_order[d], it, c);
}
}