all repos — openbox @ af42ac2a535d3625e689c3e60bc525f8a455fcd6

openbox fork - make it a bit more like ryudo

less configure events on mapping
Dana Jansens danakj@orodu.net
commit

af42ac2a535d3625e689c3e60bc525f8a455fcd6

parent

32b64b6cf5876364c891b97bd5227cc53aeac17b

2 files changed, 16 insertions(+), 8 deletions(-)

jump to
M openbox/client.copenbox/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.copenbox/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);