less configure events on mapping
Dana Jansens danakj@orodu.net
2 files changed,
16 insertions(+),
8 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -2566,6 +2566,8 @@ gboolean shaded = self->shaded;
gboolean demands_attention = self->demands_attention; gboolean max_horz = self->max_horz; gboolean max_vert = self->max_vert; + Rect oldarea; + gint l; /* turn them all off in the client, so they won't affect the window being placed */@@ -2581,10 +2583,12 @@
do this before applying the states so they have the correct pre-max/pre-fullscreen values */ - client_configure(self, x, y, w, h, FALSE, TRUE); + client_try_configure(self, &x, &y, &w, &h, &l, &l, FALSE); ob_debug("placed window 0x%x at %d, %d with size %d x %d\n", self->window, self->area.x, self->area.y, self->area.width, self->area.height); + oldarea = self->area; /* save the area */ + RECT_SET(self->area, x, y, w, h); /* put where it should be for the premax stuff */ /* apply the states. these are in a carefully crafted order.. */@@ -2605,6 +2609,12 @@ else if (max_vert)
client_maximize(self, TRUE, 2); else if (max_horz) client_maximize(self, TRUE, 1); + + /* if the window hasn't been configured yet, then do so now */ + if (!fullscreen && !max_vert && !max_horz) { + self->area = oldarea; + client_configure(self, x, y, w, h, FALSE, TRUE); + } /* set the desktop hint, to make sure that it always exists */ PROP_SET32(self->window, net_wm_desktop, cardinal, self->desktop);@@ -2929,13 +2939,6 @@ if (send_resize_client && (w <= oldw || h <= oldh)) {
frame_adjust_client_area(self->frame); XMoveResizeWindow(ob_display, self->window, self->frame->size.left, self->frame->size.top, w, h); - } - - if (!resized) { - /* when the client has StaticGravity, it likes to move around. - also this correctly positions the client when it maps */ - XMoveWindow(ob_display, self->window, - self->frame->size.left, self->frame->size.top); } XFlush(ob_display);
M
openbox/frame.c
→
openbox/frame.c
@@ -764,6 +764,11 @@ self->area.y,
self->area.width, self->area.height); + /* when the client has StaticGravity, it likes to move around. + also this correctly positions the client when it maps */ + XMoveWindow(ob_display, self->client->window, + self->size.left, self->size.top); + if (resized) { framerender_frame(self); frame_adjust_shape(self);