only configure the window after it sets WM_NORMAL_HINTS if it is outside of its new bounds
This commit is contained in:
parent
5ac4d96d79
commit
e319301415
1 changed files with 17 additions and 1 deletions
|
@ -1487,9 +1487,25 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
|||
|
||||
msgtype = e->xproperty.atom;
|
||||
if (msgtype == XA_WM_NORMAL_HINTS) {
|
||||
gint x, y, w, h, lw, lh;
|
||||
|
||||
ob_debug("Update NORMAL hints\n");
|
||||
client_update_normal_hints(client);
|
||||
/* normal hints can make a window non-resizable */
|
||||
client_setup_decor_and_functions(client, TRUE);
|
||||
client_setup_decor_and_functions(client, FALSE);
|
||||
|
||||
/* make sure the client's sizes are within its bounds */
|
||||
RECT_TO_DIMS(client->area, x, y, w, h);
|
||||
client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
|
||||
if (!RECT_EQUAL_DIMS(client->area, x, y, w, h)) {
|
||||
gulong ignore_start;
|
||||
|
||||
ob_debug("Configuring client x %d y %d w %d h %d\n",
|
||||
x, y, w, h);
|
||||
ignore_start = event_start_ignore_all_enters();
|
||||
client_configure(client, x, y, w, h, FALSE, TRUE);
|
||||
event_end_ignore_all_enters(ignore_start);
|
||||
}
|
||||
} else if (msgtype == XA_WM_HINTS) {
|
||||
client_update_wmhints(client);
|
||||
} else if (msgtype == XA_WM_TRANSIENT_FOR) {
|
||||
|
|
Loading…
Reference in a new issue