diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-03-28 09:57:48 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-03-28 09:57:48 +0000 |
| commit | 32808b53a58e2c8ed3893e5156d4846a88a94fb6 (patch) | |
| tree | 3566b22b5ee6bb8a96d7b7783422b3f03d44949e /openbox | |
| parent | 21442ab6e429ac648ffe1a3efba7dfb200e7fddd (diff) | |
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.
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/event.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/openbox/event.c b/openbox/event.c index 13586f70..8445a7f0 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -243,12 +243,12 @@ void event_process(XEvent *e) 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 @@ void event_process(XEvent *e) 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 @@ static void event_handle_client(Client *client, XEvent *e) /* 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)) { |
