X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fevent.c;h=d4d921efd229cb34d94af6b23cfcaaf9db8a4513;hb=adc5675823de8e3bbe94a1419b04103c6f845dad;hp=7eef80174ad14a2084c4b60597294ec0c11682bc;hpb=768ce7b456fb7455c39bc275b71af381d635ac0a;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 7eef8017..d4d921ef 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -422,7 +422,7 @@ static void event_process(const XEvent *ec, gpointer data) } } -#if 0 /* focus debugging stuff */ +#if 1 /* focus debugging stuff */ if (e->type == FocusIn || e->type == FocusOut) { gint mode = e->xfocus.mode; gint detail = e->xfocus.detail; @@ -655,8 +655,12 @@ static void event_handle_client(ObClient *client, XEvent *e) case FocusOut: /* Look for the followup FocusIn */ if (!XCheckIfEvent(ob_display, &ce, look_for_focusin, NULL)) { - /* There is no FocusIn, move focus where we can still hear events*/ - focus_fallback(OB_FOCUS_FALLBACK_NOFOCUS); + /* There is no FocusIn, this means focus went to a window that + is not being managed. most likely, this went to PointerRoot + or None, meaning the window is no longer around so fallback + focus, but not to that window */ + ob_debug("Focus went to a black hole !\n"); + focus_fallback(FALSE); } else if (ce.xany.window == e->xany.window) { /* If focus didn't actually move anywhere, there is nothing to do*/ break; @@ -667,7 +671,9 @@ static void event_handle_client(ObClient *client, XEvent *e) if (ed.ignored) { /* The FocusIn was ignored, this means it was on a window that isn't a client. */ - focus_fallback(OB_FOCUS_FALLBACK_NOFOCUS); + ob_debug("Focus went to an unmanaged window 0x%x !\n", + ce.xfocus.window); + focus_fallback(TRUE); } }