From: Dana Jansens Date: Mon, 21 Apr 2003 00:47:14 +0000 (+0000) Subject: yet more changes to choosing to focus windows when they mapp X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=5d973d35e860ec69fe7721785e36038fdc75e1d9;p=chaz%2Fopenbox yet more changes to choosing to focus windows when they mapp --- diff --git a/openbox/client.c b/openbox/client.c index c4df3a87..2e0e442a 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -153,7 +153,6 @@ void client_manage(Window window) XSetWindowAttributes attrib_set; /* XWMHints *wmhint; */ guint i; - Client *parent; grab_server(TRUE); @@ -241,9 +240,21 @@ void client_manage(Window window) /* 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 @@ void client_manage(Window window) 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);