Merge branch 'backport' into work
authorDana Jansens <danakj@orodu.net>
Sun, 2 Mar 2008 20:03:10 +0000 (15:03 -0500)
committerDana Jansens <danakj@orodu.net>
Sun, 2 Mar 2008 20:03:10 +0000 (15:03 -0500)
1  2 
openbox/actions/session.c
openbox/client.c
openbox/prompt.c
openbox/prompt.h
po/POTFILES.in

Simple merge
@@@ -442,12 -528,10 +448,10 @@@ void client_manage(Window window, ObPro
              raise = TRUE;
              ob_debug_type(OB_DEBUG_FOCUS,
                            "Not focusing the window because its on another "
 -                          "desktop\n");
 +                          "desktop");
          }
-         /* If something is focused, and it's not our relative... */
-         else if (focus_client && client_search_focus_tree_full(self) == NULL &&
-                  client_search_focus_group_full(self) == NULL)
-         {
+         /* If something is focused... */
+         else if (focus_client) {
              /* If the user is working in another window right now, then don't
                 steal focus */
              if (event_last_user_time && launch_time &&
                  activate = FALSE;
                  ob_debug_type(OB_DEBUG_FOCUS,
                                "Not focusing the window because the user is "
 -                              "working in another window\n");
 +                              "working in another window");
              }
-             /* If it's a transient (and its parents aren't focused) */
-             else if (client_has_parent(self)) {
+             /* If the new window is a transient (and its relatives aren't
+                focused) */
+             else if (client_has_parent(self) && !relative_focused) {
                  activate = FALSE;
                  ob_debug_type(OB_DEBUG_FOCUS,
                                "Not focusing the window because it is a "
                  raise = TRUE;
                  ob_debug_type(OB_DEBUG_FOCUS,
                                "Not focusing the window because another window "
 -                              "would get the focus anyway\n");
 +                              "would get the focus anyway");
              }
+             /* Don't move focus if the window is not visible on the current
+                desktop and none of its relatives are focused */
              else if (!(self->desktop == screen_desktop ||
-                        self->desktop == DESKTOP_ALL))
+                        self->desktop == DESKTOP_ALL) &&
+                      !relative_focused)
              {
                  activate = FALSE;
                  raise = TRUE;
Simple merge
Simple merge
diff --cc po/POTFILES.in
Simple merge