]> Dogcows Code - chaz/openbox/commitdiff
yet more changes to choosing to focus windows when they mapp
authorDana Jansens <danakj@orodu.net>
Mon, 21 Apr 2003 00:47:14 +0000 (00:47 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 21 Apr 2003 00:47:14 +0000 (00:47 +0000)
openbox/client.c

index c4df3a87595a9f25519e7133253ca4ccce6f5ae4..2e0e442addb4ad5c861be0a687ba16a3e9e0b49a 100644 (file)
@@ -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);
This page took 0.029651 seconds and 4 git commands to generate.