all repos — openbox @ 4cb48bebb5e13224c0f272809914de679cf395e1

openbox fork - make it a bit more like ryudo

reverting the transient focus cycle change, its just not.. right. add the parent's title to the transient's for the popup instead of just relpacing it
Dana Jansens danakj@orodu.net
commit

4cb48bebb5e13224c0f272809914de679cf395e1

parent

1139d96e7f109158e27a0605f4de94ccceb41c55

3 files changed, 24 insertions(+), 20 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -2254,6 +2254,7 @@ (self->desktop == screen_desktop ||

self->desktop == DESKTOP_ALL) && !self->iconic)) return FALSE; + return TRUE; }
M openbox/client.hopenbox/client.h

@@ -493,8 +493,9 @@ If no focused client is found, NULL is returned.

*/ Client *client_search_focus_tree_full(Client *self); -/*! Return a modal child of the client window - @return A modal child of the client window, or 0 if none was found. +/*! Return a modal child of the client window that can be focused. + @return A modal child of the client window that can be focused, or 0 if + none was found. */ Client *client_search_modal_child(Client *self);
M openbox/focus.copenbox/focus.c

@@ -245,6 +245,8 @@ if (!show) {

popup_hide(focus_cycle_popup); } else { Rect *a; + Client *p = c; + char *title; a = screen_area(c->desktop); popup_position(focus_cycle_popup, CenterGravity,

@@ -257,8 +259,22 @@ /* XXX the size and the font extents need to be related on some level

*/ popup_size(focus_cycle_popup, 320, 48); - popup_show(focus_cycle_popup, (c->iconic ? c->icon_title : c->title), - client_icon(c, 48, 48)); + /* use the transient's parent's title/icon */ + while (p->transient_for && p->transient_for != TRAN_GROUP) + p = p->transient_for; + + if (p == c) + title = NULL; + else + title = g_strconcat((p->iconic ? p->icon_title : p->title), + " - ", + (c->iconic ? c->icon_title : c->title), + NULL); + + popup_show(focus_cycle_popup, + (title ? title : (c->iconic ? c->icon_title : c->title)), + client_icon(p, 48, 48)); + g_free(title); } }

@@ -278,22 +294,8 @@ if (focus_client)

frame_adjust_focus(focus_client->frame, TRUE); goto done_cycle; } else if (done) { - if (focus_cycle_target) { - Client *t; - - /* actually focus a transient */ - - /* fist, try for a modal */ - t = client_focus_target(focus_cycle_target); - if (t != focus_cycle_target) - focus_cycle_target = t; - else - /* just grab the deepest transient you can find */ - while (focus_cycle_target->transients) - focus_cycle_target = focus_cycle_target->transients->data; - + if (focus_cycle_target) client_activate(focus_cycle_target); - } goto done_cycle; } if (!first)

@@ -320,7 +322,7 @@ if (it == NULL) it = g_list_last(list);

} /*ft = client_focus_target(it->data);*/ ft = it->data; - if (ft->transient_for == NULL && client_normal(ft) && + if (ft->transients == NULL && client_normal(ft) && client_can_focus(ft)) { if (ft != focus_cycle_target) { /* prevents flicker */ if (focus_cycle_target)