summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-28 09:57:48 +0000
committerDana Jansens <danakj@orodu.net>2003-03-28 09:57:48 +0000
commit32808b53a58e2c8ed3893e5156d4846a88a94fb6 (patch)
tree3566b22b5ee6bb8a96d7b7783422b3f03d44949e /openbox
parent21442ab6e429ac648ffe1a3efba7dfb200e7fddd (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.c10
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)) {