summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-22 01:36:17 +0000
committerDana Jansens <danakj@orodu.net>2007-05-22 01:36:17 +0000
commit4c25342316a3d55f7c2e44b879c38bfca8b69053 (patch)
tree83e355b7be87a73a6990888ba82f2570a56c47e7 /openbox
parente8bac610ad445d7843fc061bfd5e82761a912d61 (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.c13
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);