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));
|
!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);
|
||||||
|
|
Loading…
Reference in a new issue