From: Dana Jansens Date: Mon, 14 May 2007 02:27:43 +0000 (+0000) Subject: the configurenotify needs to come after adjusting the frame's size. otherwise it... X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=26ff0cbaa8cfb004d7486b10795193c15d1d6da0;p=chaz%2Fopenbox the configurenotify needs to come after adjusting the frame's size. otherwise it gets messed up somehow. --- diff --git a/openbox/client.c b/openbox/client.c index 5802b816..10626633 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -414,10 +414,6 @@ void client_manage(Window window) !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 @@ void client_manage(Window window) 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,24 +507,13 @@ void client_manage(Window window) 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); client_present(self, FALSE, !stacked);