more focus cleanups. ignored focusin's were not working right recursively. also, when the focusin coming later is not for a valid window the fallback would not be called. both fixed.
Dana Jansens danakj@orodu.net
1 files changed,
5 insertions(+),
5 deletions(-)
jump to
M
openbox/event.c
→
openbox/event.c
@@ -243,12 +243,12 @@ XEvent fi;
if (XCheckTypedEvent(ob_display, FocusIn, &fi)) { event_process(&fi); - if (fi.xfocus.window == e->xfocus.window) - return; /* secret magic way of event_process telling us that no client was found for the FocusIn event */ - if (fi.xfocus.window == None) + if (fi.xfocus.window != None) focus_fallback(FALSE); + if (fi.xfocus.window == e->xfocus.window) + return; } else focus_fallback(FALSE); }@@ -274,8 +274,6 @@ else if (window == ob_root)
event_handle_root(e); else if (e->type == MapRequest) client_manage(window); - else if (e->type == FocusIn) - e->xfocus.window = None; /* says no client was found for the event */ else if (e->type == ConfigureRequest) { /* unhandled configure requests must be used to configure the window directly */@@ -347,6 +345,8 @@ client->window);
/* focus state can affect the stacking layer */ client_calc_layer(client); engine_frame_adjust_focus(client->frame); + + e->xfocus.window = None; /* says a client was found for the event! */ break; case EnterNotify: if (client_normal(client)) {