diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-05-22 01:36:17 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-05-22 01:36:17 +0000 |
| commit | 4c25342316a3d55f7c2e44b879c38bfca8b69053 (patch) | |
| tree | 83e355b7be87a73a6990888ba82f2570a56c47e7 /openbox | |
| parent | e8bac610ad445d7843fc061bfd5e82761a912d61 (diff) | |
dont use the client's area rect when figuring out where to place it because then when you want to move ti there, it thinks that it is already there! i actually fixed another bug recently that would have affectd this before but now it should work perfect..
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/client.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/openbox/client.c b/openbox/client.c index b41ec8c8..ce092aa8 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); |
