From: Dana Jansens Date: Sat, 9 Jun 2007 17:19:55 +0000 (+0000) Subject: only configure the window after it sets WM_NORMAL_HINTS if it is outside of its new... X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=e31930141532207fcee7994b95924fe59c1b0ba0;p=chaz%2Fopenbox only configure the window after it sets WM_NORMAL_HINTS if it is outside of its new bounds --- diff --git a/openbox/event.c b/openbox/event.c index ed05a58d..fa83c29e 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -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) {