X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fevent.c;h=2d44bc51090f2880dd5926e1db477daa16a02459;hb=62ac5e57a1f48a302e9bb69486f8d8722841e093;hp=c63f6fea7bf3728924a43c5ad5f49fcb61510d1d;hpb=d3095f3671aef68c8a3f8ab30c8b998623ca1567;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index c63f6fea..2d44bc51 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -723,6 +723,7 @@ static void event_handle_root(XEvent *e) } else if (msgtype == prop_atoms.net_showing_desktop) { screen_show_desktop(e->xclient.data.l[0] != 0, NULL); } else if (msgtype == prop_atoms.ob_control) { + ob_debug("OB_CONTROL: %d\n", e->xclient.data.l[0]); if (e->xclient.data.l[0] == 1) ob_reconfigure(); else if (e->xclient.data.l[0] == 2) @@ -730,8 +731,10 @@ static void event_handle_root(XEvent *e) } break; case PropertyNotify: - if (e->xproperty.atom == prop_atoms.net_desktop_names) + if (e->xproperty.atom == prop_atoms.net_desktop_names) { + ob_debug("UPDATE DESKTOP NAMES\n"); screen_update_desktop_names(); + } else if (e->xproperty.atom == prop_atoms.net_desktop_layout) screen_update_layout(); break; @@ -1155,8 +1158,9 @@ static void event_handle_client(ObClient *client, XEvent *e) notify is sent or not */ } - if (move || resize) { + { gint lw,lh; + gulong ignore_start; client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE); @@ -1173,18 +1177,11 @@ static void event_handle_client(ObClient *client, XEvent *e) client_find_onscreen(client, &x, &y, w, h, FALSE); - /* if they requested something that moves the window, or if - the window is actually being changed then configure it and - send a configure notify to them */ - if (move || !RECT_EQUAL_DIMS(client->area, x, y, w, h)) { - gulong ignore_start; - - ob_debug("Granting ConfigureRequest 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); - } + ob_debug("Granting ConfigureRequest 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); } break; } @@ -1484,9 +1481,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) {