summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-04-21 00:47:14 +0000
committerDana Jansens <danakj@orodu.net>2003-04-21 00:47:14 +0000
commit5d973d35e860ec69fe7721785e36038fdc75e1d9 (patch)
tree439888b42a40481e60117fba795638ad692b9480
parentd22e9c9c1d669c27e50c3cd191cf19d31d67fb4d (diff)
yet more changes to choosing to focus windows when they mapp
-rw-r--r--openbox/client.c18
1 files 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);