X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=88cccdee41a6357d3c5c2d3ee4eacc79e704bdec;hb=15d615853671b0988b9a87720cac2762c702f28b;hp=ed05a58d8c58e28cb1809dc2f433010c856f9e45;hpb=268c13867de4d2524aba020a27487d3092b10cfe;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index ed05a58d..88cccdee 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1158,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); @@ -1176,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; } @@ -1440,7 +1434,7 @@ static void event_handle_client(ObClient *client, XEvent *e) /* send a synthetic ConfigureNotify, cuz this is supposed to be like a ConfigureRequest. */ - client_reconfigure(client); + client_reconfigure(client, TRUE); } else ob_debug_type(OB_DEBUG_APP_BUGS, "_NET_RESTACK_WINDOW sent for window %s " @@ -1487,9 +1481,12 @@ static void event_handle_client(ObClient *client, XEvent *e) msgtype = e->xproperty.atom; if (msgtype == XA_WM_NORMAL_HINTS) { + 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); + + client_reconfigure(client, FALSE); } else if (msgtype == XA_WM_HINTS) { client_update_wmhints(client); } else if (msgtype == XA_WM_TRANSIENT_FOR) { @@ -1818,10 +1815,9 @@ static void event_handle_user_input(ObClient *client, XEvent *e) in the case where it is animating before disappearing */ if (!client || !frame_iconify_animating(client->frame)) mouse_event(client, e); - } else if (e->type == KeyPress) { + } else keyboard_event((focus_cycle_target ? focus_cycle_target : (client ? client : focus_client)), e); - } } } @@ -1910,21 +1906,20 @@ static gboolean is_enter_focus_event_ignored(XEvent *e) void event_cancel_all_key_grabs() { - if (keyboard_interactively_grabbed()) + if (keyboard_interactively_grabbed()) { keyboard_interactive_cancel(); - else if (menu_frame_visible) + ob_debug("KILLED interactive event\n"); + } + else if (menu_frame_visible) { menu_frame_hide_all(); - else if (grab_on_keyboard()) + ob_debug("KILLED open menus\n"); + } + else if (grab_on_keyboard()) { ungrab_keyboard(); + ob_debug("KILLED active grab on keyboard\n"); + } else - /* If we don't have the keyboard grabbed, then ungrab it with - XUngrabKeyboard, so that there is not a passive grab left - on from the KeyPress. If the grab is left on, and focus - moves during that time, it will be NotifyWhileGrabbed, and - applications like to ignore those! */ - if (!keyboard_interactively_grabbed()) - XUngrabKeyboard(ob_display, CurrentTime); - + ungrab_passive_key(); } gboolean event_time_after(Time t1, Time t2)