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)); !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", ob_debug("placing window 0x%x at %d, %d with size %d x %d\n",
self->window, self->area.x, self->area.y, self->window, self->area.x, self->area.y,
self->area.width, self->area.height); 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", ob_debug(" but session requested %d %d instead, overriding\n",
self->session->x, self->session->y); 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) { if (activate) {
guint32 last_time = focus_client ? guint32 last_time = focus_client ?
@ -495,24 +507,13 @@ void client_manage(Window window)
stacking_raise(CLIENT_AS_WINDOW(self)); stacking_raise(CLIENT_AS_WINDOW(self));
} }
/* adjust the frame to the client's size before showing the window */ mouse_grab_for_client(self, TRUE);
frame_adjust_area(self->frame, FALSE, TRUE, FALSE);
frame_adjust_client_area(self->frame);
/* this has to happen before we try focus the window, but we want it to /* 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 happen after the client's stacking has been determined or it looks bad
*/ */
client_show(self); 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) { if (activate) {
gboolean stacked = client_restore_session_stacking(self); gboolean stacked = client_restore_session_stacking(self);
client_present(self, FALSE, !stacked); client_present(self, FALSE, !stacked);