]> Dogcows Code - chaz/openbox/blobdiff - openbox/frame.c
always set all the coords, as the x/y only change when resizing the border too
[chaz/openbox] / openbox / frame.c
index e04c7302bdd66d7c6feaf5c6925f433a1bff205e..780bc23d1302fe4caa0b65c7e89c9c87f8e01123 100644 (file)
@@ -695,7 +695,9 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                         self->cbwidth_y);
 
             /* when the client has StaticGravity, it likes to move around. */
-            XMoveWindow(ob_display, self->client->window, 0, 0);
+            XMoveWindow(ob_display, self->client->window,
+                        -self->client->border_width,
+                        -self->client->border_width);
         }
     }
 
@@ -842,8 +844,14 @@ void frame_adjust_icon(ObFrame *self)
 
 void frame_grab_client(ObFrame *self)
 {
+    /* DO NOT map the client window here. we used to do that, but it is bogus.
+       we need to set up the client's dimensions and everything before we
+       send a mapnotify or we create race conditions.
+    */
+
     /* reparent the client to the frame */
-    XReparentWindow(ob_display, self->client->window, self->plate, 0, 0);
+    XReparentWindow(ob_display, self->client->window, self->plate,
+                    -self->client->border_width, -self->client->border_width);
 
     /*
       When reparenting the client window, it is usually not mapped yet, since
This page took 0.021926 seconds and 4 git commands to generate.