yet more changes to choosing to focus windows when they mapp
Dana Jansens danakj@orodu.net
1 files changed,
15 insertions(+),
3 deletions(-)
jump to
M
openbox/client.c
→
openbox/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);