From 5d973d35e860ec69fe7721785e36038fdc75e1d9 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 21 Apr 2003 00:47:14 +0000 Subject: [PATCH] yet more changes to choosing to focus windows when they mapp --- openbox/client.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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); -- 2.39.2