- /* try for group relations */
- 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)
- if (sit->data == it->data)
- if (sit->data != old && client_normal(sit->data))
- if (client_can_focus(sit->data)) {
- gboolean r = client_focus(sit->data);
- assert(r);
- return;
- }
- }
- }
-
- 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)) {
- gboolean r = client_focus(it->data);
- assert(r);
- return;
- }
-
- /* nothing to focus, and already set it to none above */
-}
-
-static void popup_cycle(ObClient *c, gboolean show)
-{
- if (!show) {
- popup_hide(focus_cycle_popup);
- } else {
- Rect *a;
- ObClient *p = c;
- char *title;
-
- a = screen_physical_area_monitor(0);
- popup_position(focus_cycle_popup, CenterGravity,
- a->x + a->width / 2, a->y + a->height / 2);
-/* popup_size(focus_cycle_popup, a->height/2, a->height/16);
- popup_show(focus_cycle_popup, c->title,
- client_icon(c, a->height/16, a->height/16));
-*/
- /* XXX the size and the font extents need to be related on some level
- */
- popup_size(focus_cycle_popup, POPUP_WIDTH, POPUP_HEIGHT);
-
- /* use the transient's parent's title/icon */
- while (p->transient_for && p->transient_for != OB_TRAN_GROUP)
- p = p->transient_for;
-
- if (p == c)
- title = NULL;
- else
- title = g_strconcat((c->iconic ? c->icon_title : c->title),
- " - ",
- (p->iconic ? p->icon_title : p->title),
- NULL);
-
- popup_show(focus_cycle_popup,
- (title ? title : (c->iconic ? c->icon_title : c->title)),
- client_icon(p, 48, 48));
- g_free(title);
- }