the configurenotify needs to come after adjusting the frame's size. otherwise it gets messed up somehow.

This commit is contained in:
Dana Jansens 2007-05-14 02:27:43 +00:00
parent 1a5139f283
commit 26ff0cbaa8

View file

@ -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);