all repos — openbox @ e31930141532207fcee7994b95924fe59c1b0ba0

openbox fork - make it a bit more like ryudo

only configure the window after it sets WM_NORMAL_HINTS if it is outside of its new bounds
Dana Jansens danakj@orodu.net
commit

e31930141532207fcee7994b95924fe59c1b0ba0

parent

5ac4d96d79883b77eded257c6a79284f9ebfdaed

1 files changed, 17 insertions(+), 1 deletions(-)

jump to
M openbox/event.copenbox/event.c

@@ -1487,9 +1487,25 @@ }

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) {