all repos — openbox @ 26ff0cbaa8cfb004d7486b10795193c15d1d6da0

openbox fork - make it a bit more like ryudo

the configurenotify needs to come after adjusting the frame's size. otherwise it gets messed up somehow.
Dana Jansens danakj@orodu.net
commit

26ff0cbaa8cfb004d7486b10795193c15d1d6da0

parent

1a5139f283916ff8341d434c64f9fbe38dc8f002

1 files changed, 19 insertions(+), 18 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -414,10 +414,6 @@ client_normal(self) &&

!self->session)); } - /* do this after the window is placed, so the premax/prefullscreen numbers - won't be all wacko!! - also, this moves the window to the position where it has been placed - */ ob_debug("placing 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);

@@ -425,9 +421,25 @@ if (self->session)

ob_debug(" but session requested %d %d instead, overriding\n", self->session->x, self->session->y); - client_apply_startup_state(self); + /* adjust the frame to the client's size before showing the window */ + frame_adjust_area(self->frame, FALSE, TRUE, FALSE); + frame_adjust_client_area(self->frame); - mouse_grab_for_client(self, TRUE); + + /* move the client to its placed position, or it it's already there, + generate a ConfigureNotify telling the client where it is. + + do this after adjusting the frame. otherwise it gets all weird and + clients don't work right */ + client_configure_full(self, self->area.x, self->area.y, + self->area.width, self->area.height, + FALSE, TRUE); + + /* do this after the window is placed, so the premax/prefullscreen numbers + won't be all wacko!! + also, this moves the window to the position where it has been placed + */ + client_apply_startup_state(self); if (activate) { guint32 last_time = focus_client ?

@@ -495,23 +507,12 @@ if (!client_restore_session_stacking(self))

stacking_raise(CLIENT_AS_WINDOW(self)); } - /* adjust the frame to the client's size before showing the window */ - frame_adjust_area(self->frame, FALSE, TRUE, FALSE); - frame_adjust_client_area(self->frame); + mouse_grab_for_client(self, TRUE); /* this has to happen before we try focus the window, but we want it to happen after the client's stacking has been determined or it looks bad */ client_show(self); - - /* generate a ConfigureNotify telling the client where it is. - - do this after showing the window. otherwise applications tend to - ignore the configurenotify. */ - client_configure_full(self, self->area.x, self->area.y, - self->area.width, self->area.height, - FALSE, TRUE); - if (activate) { gboolean stacked = client_restore_session_stacking(self);