]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
don't force clients on screen when restarting
[chaz/openbox] / openbox / client.c
index daa65379f3d50e4201a60c7ea0f91976c3ed7126..4cfece1dd2e8996bcc83632ab195e8b70ebfab46 100644 (file)
@@ -411,10 +411,11 @@ void client_manage(Window window)
                                 splash screens get "transient" set to TRUE by
                                 the place_client call
                              */
-                             transient ||
-                             (!(self->positioned & USPosition) &&
-                              client_normal(self) &&
-                              !self->session));
+                             ob_state() == OB_STATE_RUNNING &&
+                             (transient ||
+                              (!(self->positioned & USPosition) &&
+                               client_normal(self) &&
+                               !self->session)));
     }
 
     /* if the window isn't user-sized, then make it fit inside
@@ -426,10 +427,11 @@ void client_manage(Window window)
        splash screens get "transient" set to TRUE by
        the place_client call
     */
-    if (transient ||
-        (!(self->sized & USSize) &&
-         client_normal(self) &&
-         !self->session))
+    if (ob_state() == OB_STATE_RUNNING &&
+        (transient ||
+         (!(self->sized & USSize) &&
+          client_normal(self) &&
+          !self->session)))
     {
         /* make a copy to modify */
         Rect a = *screen_area_monitor(self->desktop, client_monitor(self));
@@ -1152,6 +1154,9 @@ static void client_get_desktop(ObClient *self)
 
                 for (it = self->group->members; it; it = g_slist_next(it)) {
                     ObClient *c = it->data;
+
+                    if (c->desktop == DESKTOP_ALL) continue;
+
                     if (c != self) {
                         if (first) {
                             all = c->desktop;
@@ -3519,10 +3524,6 @@ gboolean client_focus(ObClient *self)
     self = client_focus_target(self);
 
     if (!client_can_focus(self)) {
-        if (!self->frame->visible) {
-            /* update the focus lists */
-            focus_order_to_top(self);
-        }
         ob_debug_type(OB_DEBUG_FOCUS,
                       "Client %s can't be focused\n", self->title);
         return FALSE;
This page took 0.020811 seconds and 4 git commands to generate.