summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-04-23 22:05:03 +0000
committerDana Jansens <danakj@orodu.net>2007-04-23 22:05:03 +0000
commitf999797f01755dcb5de3db010ad282feb8e3ac37 (patch)
treef545ba0af9a2455b01d77799f564562b0dc60a0a
parentf507432c86bb54ab682805719fb730559f9e08e5 (diff)
leavenotify events messing up delayed focus
-rw-r--r--openbox/event.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/openbox/event.c b/openbox/event.c
index a4105c79..8d67ee93 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -733,12 +733,23 @@ static void event_handle_client(ObClient *client, XEvent *e)
frame_adjust_state(client->frame);
break;
case OB_FRAME_CONTEXT_FRAME:
+ ob_debug_type(OB_DEBUG_FOCUS,
+ "%sNotify mode %d detail %d on %lx\n",
+ (e->type == EnterNotify ? "Enter" : "Leave"),
+ e->xcrossing.mode,
+ e->xcrossing.detail, (client?client->window:0));
if (keyboard_interactively_grabbed())
break;
- if (config_focus_follow && config_focus_delay)
+ if (config_focus_follow && config_focus_delay &&
+ /* leaveinferior events can happen when the mouse goes onto the
+ window's border and then into the window before the delay
+ is up */
+ e->xcrossing.detail != NotifyInferior)
+ {
ob_main_loop_timeout_remove_data(ob_main_loop,
focus_delay_func,
client, FALSE);
+ }
break;
default:
break;