the configurenotify needs to come after adjusting the frame's size. otherwise it gets messed up somehow.
This commit is contained in:
parent
1a5139f283
commit
26ff0cbaa8
1 changed files with 19 additions and 18 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue