all repos — openbox @ 5d973d35e860ec69fe7721785e36038fdc75e1d9

openbox fork - make it a bit more like ryudo

yet more changes to choosing to focus windows when they mapp
Dana Jansens danakj@orodu.net
commit

5d973d35e860ec69fe7721785e36038fdc75e1d9

parent

d22e9c9c1d669c27e50c3cd191cf19d31d67fb4d

1 files changed, 15 insertions(+), 3 deletions(-)

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

@@ -153,7 +153,6 @@ XWindowAttributes attrib;

XSetWindowAttributes attrib_set; /* XWMHints *wmhint; */ guint i; - Client *parent; grab_server(TRUE);

@@ -241,9 +240,21 @@ client_showhide(self);

/* focus the new window? */ if (ob_state != State_Starting) { + Client *parent; + gboolean group_foc = FALSE; + parent = NULL; - if (self->transient_for) { + if (self->group) { + GSList *it; + + for (it = self->group->members; it; it = it->next) + if (client_focused(it->data)) { + group_foc = TRUE; + break; + } + } + if (!group_foc && self->transient_for) { if (self->transient_for != TRAN_GROUP) {/* transient of a window */ parent = self->transient_for; } else { /* transient of a group */

@@ -260,7 +271,8 @@ would also include dialog types. in this case we want more strict

rules for focus */ if ((config_focus_new && (self->type == Type_Normal || - (self->type == Type_Dialog && !parent && !self->group))) || + (self->type == Type_Dialog && (group_foc || + (!parent && !self->group))))) || (parent && (client_focused(parent) || search_focus_tree(parent, parent)))) { client_focus(self);