Merge branch 'backport' into work
[mikachu/openbox.git] / openbox / client.c
index b6ca93a..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);
 
@@ -232,6 +233,7 @@ void client_manage(Window window, ObPrompt *prompt)
 
     ob_debug("Window type: %d", self->type);
     ob_debug("Window group: 0x%x", self->group?self->group->leader:0);
+    ob_debug("Window name: %s class: %s", self->name, self->class);
 
     /* now we have all of the window's information so we can set this up.
        do this before creating the frame, so it can tell that we are still
@@ -263,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);
@@ -279,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))
@@ -933,19 +940,6 @@ static gboolean client_restore_session_stacking(ObClient *self)
     return FALSE;
 }
 
-void client_reconfigure(ObClient *self, gboolean force)
-{
-    int x, y, w, h, lw, lh;
-
-    x = self->area.x;
-    y = self->area.y;
-    w = self->area.width;
-    h = self->area.height;
-    client_try_configure(self, &x, &y, &w, &h, &lw, &lh, FALSE);
-    client_find_onscreen(self, &x, &y, w, h, FALSE);
-    client_configure(self, x, y, w, h, FALSE, TRUE, force);
-}
-
 void client_move_onscreen(ObClient *self, gboolean rude)
 {
     gint x = self->area.x;