Merge branch 'backport' into work
authorMikael Magnusson <mikachu@gmail.com>
Wed, 29 Oct 2008 12:48:03 +0000 (13:48 +0100)
committerMikael Magnusson <mikachu@gmail.com>
Wed, 29 Oct 2008 12:48:34 +0000 (13:48 +0100)
openbox/actions/desktop.c
openbox/client.c

index e1bd552..e352aa2 100644 (file)
@@ -140,7 +140,12 @@ static gboolean run_func(ObActionsData *data, gpointer options)
             go = o->follow;
         }
 
-        if (go) screen_set_desktop(d, TRUE);
+        if (go) {
+            screen_set_desktop(d, TRUE);
+            if (data->client)
+                client_bring_helper_windows(data->client);
+        }
+
         actions_client_move(data, FALSE);
     }
     return FALSE;
index ab00cd0..5686a93 100644 (file)
@@ -202,6 +202,7 @@ void client_manage(Window window, ObPrompt *prompt)
     gboolean transient = FALSE;
     Rect place, *monitor;
     Time launch_time, map_time;
+    gint user_time;
 
     ob_debug("Managing window: 0x%lx", window);
 
@@ -264,6 +265,9 @@ void client_manage(Window window, ObPrompt *prompt)
     /* tell startup notification that this app started */
     launch_time = sn_app_started(self->startup_id, self->class, self->name);
 
+    if (!OBT_PROP_GET32(self->window, NET_WM_USER_TIME, CARDINAL, &user_time))
+        user_time = map_time;
+
     /* do this after we have a frame.. it uses the frame to help determine the
        WM_STATE to apply. */
     client_change_state(self);
@@ -280,6 +284,8 @@ void client_manage(Window window, ObPrompt *prompt)
         /* this means focus=true for window is same as config_focus_new=true */
         ((config_focus_new || (settings && settings->focus == 1)) ||
          client_search_focus_tree_full(self)) &&
+        /* NET_WM_USER_TIME 0 when mapping means don't focus */
+        (user_time != 0) &&
         /* this checks for focus=false for the window */
         (!settings || settings->focus != 0) &&
         focus_valid_target(self, FALSE, FALSE, TRUE, FALSE, FALSE))