X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.c;h=68dfedce3468ba67d5874910ec3ef3692627668f;hb=8262e1ba669cb8959734892d2657653766f5cc7e;hp=b41ec8c8203c22ef81ab74c38569e9bc1151d8b3;hpb=e8bac610ad445d7843fc061bfd5e82761a912d61;p=chaz%2Fopenbox diff --git a/openbox/client.c b/openbox/client.c index b41ec8c8..68dfedce 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -241,6 +241,7 @@ void client_manage(Window window) XWMHints *wmhint; gboolean activate = FALSE; ObAppSettings *settings; + gint placex, placey; grab_server(TRUE); @@ -364,6 +365,10 @@ void client_manage(Window window) frame_adjust_area(self->frame, FALSE, TRUE, FALSE); frame_adjust_client_area(self->frame); + /* where the frame was placed is where the window was originally */ + placex = self->area.x; + placey = self->area.y; + /* figure out placement for the window */ if (ob_state() == OB_STATE_RUNNING) { gboolean transient; @@ -374,10 +379,10 @@ void client_manage(Window window) (self->positioned == USPosition ? "user specified" : "BADNESS !?"))), self->area.x, self->area.y); - transient = place_client(self, &self->area.x, &self->area.y, settings); + transient = place_client(self, &placex, &placey, settings); /* make sure the window is visible. */ - client_find_onscreen(self, &self->area.x, &self->area.y, + client_find_onscreen(self, &placex, &placey, self->area.width, self->area.height, /* non-normal clients has less rules, and windows that are being restored from a @@ -397,7 +402,7 @@ void client_manage(Window window) } ob_debug("placing window 0x%x at %d, %d with size %d x %d\n", - self->window, self->area.x, self->area.y, + self->window, placex, placey, self->area.width, self->area.height); if (self->session) ob_debug(" but session requested %d %d instead, overriding\n", @@ -419,7 +424,7 @@ void client_manage(Window window) will get the right sizes and positions if the client is starting with those states */ - client_configure(self, self->area.x, self->area.y, + client_configure(self, placex, placey, self->area.width, self->area.height, FALSE, TRUE); @@ -932,10 +937,10 @@ gboolean client_find_onscreen(ObClient *self, gint *x, gint *y, gint w, gint h, POINT_SET(newbl, newtl.x, newbr.y); /* is it moving or just resizing from some corner? */ - stationary_l = oldtl.x == oldtl.x; - stationary_r = oldtr.x == oldtr.x; - stationary_t = oldtl.y == oldtl.y; - stationary_b = oldbl.y == oldbl.y; + stationary_l = oldtl.x == newtl.x; + stationary_r = oldtr.x == newtr.x; + stationary_t = oldtl.y == newtl.y; + stationary_b = oldbl.y == newbl.y; /* if left edge is growing and didnt move right edge */ if (stationary_r && newtl.x < oldtl.x)