X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=inline;f=openbox%2Fevent.c;h=95937f5faddf7722016a49b0a0b88ec18758fabf;hb=d158b642820910adf2d4f73370cf3537749230a6;hp=88cccdee41a6357d3c5c2d3ee4eacc79e704bdec;hpb=15d615853671b0988b9a87720cac2762c702f28b;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 88cccdee..95937f5f 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -36,7 +36,6 @@ #include "propwin.h" #include "mouse.h" #include "mainloop.h" -#include "framerender.h" #include "focus.h" #include "focus_cycle.h" #include "moveresize.h" @@ -823,23 +822,23 @@ static void event_handle_client(ObClient *client, XEvent *e) switch (con) { case OB_FRAME_CONTEXT_MAXIMIZE: client->frame->max_press = (e->type == ButtonPress); - framerender_frame(client->frame); + frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_CLOSE: client->frame->close_press = (e->type == ButtonPress); - framerender_frame(client->frame); + frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_ICONIFY: client->frame->iconify_press = (e->type == ButtonPress); - framerender_frame(client->frame); + frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_ALLDESKTOPS: client->frame->desk_press = (e->type == ButtonPress); - framerender_frame(client->frame); + frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_SHADE: client->frame->shade_press = (e->type == ButtonPress); - framerender_frame(client->frame); + frame_adjust_state(client->frame); break; default: /* nothing changes with clicks for any other contexts */ @@ -1160,7 +1159,6 @@ static void event_handle_client(ObClient *client, XEvent *e) { gint lw,lh; - gulong ignore_start; client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE); @@ -1179,9 +1177,7 @@ static void event_handle_client(ObClient *client, XEvent *e) 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); + client_configure(client, x, y, w, h, FALSE, TRUE, TRUE); } break; } @@ -1264,7 +1260,7 @@ static void event_handle_client(ObClient *client, XEvent *e) if ((unsigned)e->xclient.data.l[0] < screen_num_desktops || (unsigned)e->xclient.data.l[0] == DESKTOP_ALL) client_set_desktop(client, (unsigned)e->xclient.data.l[0], - FALSE); + FALSE, FALSE); } else if (msgtype == prop_atoms.net_wm_state) { gulong ignore_start; @@ -1343,7 +1339,6 @@ static void event_handle_client(ObClient *client, XEvent *e) moveresize_end(TRUE); } else if (msgtype == prop_atoms.net_moveresize_window) { gint ograv, x, y, w, h; - gulong ignore_start; ograv = client->gravity; @@ -1388,10 +1383,7 @@ static void event_handle_client(ObClient *client, XEvent *e) client_find_onscreen(client, &x, &y, w, h, FALSE); - /* ignore enter events caused by these like ob actions do */ - ignore_start = event_start_ignore_all_enters(); - client_configure(client, x, y, w, h, FALSE, TRUE); - event_end_ignore_all_enters(ignore_start); + client_configure(client, x, y, w, h, FALSE, TRUE, FALSE); client->gravity = ograv; } else if (msgtype == prop_atoms.net_restack_window) { @@ -1486,6 +1478,9 @@ static void event_handle_client(ObClient *client, XEvent *e) /* normal hints can make a window non-resizable */ client_setup_decor_and_functions(client, FALSE); + /* make sure the client's sizes are within its bounds, but only + reconfigure the window if it needs to. emacs will update its + normal hints every time it receives a conigurenotify */ client_reconfigure(client, FALSE); } else if (msgtype == XA_WM_HINTS) { client_update_wmhints(client); @@ -1536,7 +1531,7 @@ static void event_handle_client(ObClient *client, XEvent *e) #ifdef SHAPE if (extensions_shape && e->type == extensions_shape_event_basep) { client->shaped = ((XShapeEvent*)e)->shaped; - frame_adjust_shape(client->frame); + frame_adjust_area(client->frame, FALSE, TRUE, FALSE); } #endif }