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;
|
msgtype = e->xproperty.atom;
|
||||||
if (msgtype == XA_WM_NORMAL_HINTS) {
|
if (msgtype == XA_WM_NORMAL_HINTS) {
|
||||||
|
gint x, y, w, h, lw, lh;
|
||||||
|
|
||||||
|
ob_debug("Update NORMAL hints\n");
|
||||||
client_update_normal_hints(client);
|
client_update_normal_hints(client);
|
||||||
/* normal hints can make a window non-resizable */
|
/* 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) {
|
} else if (msgtype == XA_WM_HINTS) {
|
||||||
client_update_wmhints(client);
|
client_update_wmhints(client);
|
||||||
} else if (msgtype == XA_WM_TRANSIENT_FOR) {
|
} else if (msgtype == XA_WM_TRANSIENT_FOR) {
|
||||||
|
|
Loading…
Reference in a new issue