X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=2d548d9e6d018fac18ee93bf82a727344f355966;hb=3cbf5bfa7c42c8dace6ca3f31fe48078eeb66382;hp=2d1445192df91a2d2373e56ca88172906670bbda;hpb=e6818c741c8456a8082fad86171fa336b0e89a1e;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 2d144519..2d548d9e 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1,6 +1,5 @@ #include "openbox.h" #include "client.h" -#include "config.h" #include "xerror.h" #include "prop.h" #include "screen.h" @@ -223,8 +222,10 @@ void event_process(XEvent *e) event_lasttime = e->xproperty.time; break; case FocusIn: +#ifdef DEBUG_FOCUS g_message("FocusIn on %lx mode %d detail %d", window, e->xfocus.mode, e->xfocus.detail); +#endif /* NotifyAncestor is not ignored in FocusIn like it is in FocusOut because of RevertToPointerRoot. If the focus ends up reverting to pointer root on a workspace change, then the FocusIn event that we @@ -241,17 +242,23 @@ void event_process(XEvent *e) return; } +#ifdef DEBUG_FOCUS g_message("FocusIn on %lx", window); +#endif break; case FocusOut: +#ifdef DEBUG_FOCUS g_message("FocusOut on %lx mode %d detail %d", window, e->xfocus.mode, e->xfocus.detail); +#endif if (e->xfocus.mode == NotifyGrab || e->xfocus.detail == NotifyInferior || e->xfocus.detail == NotifyAncestor || e->xfocus.detail > NotifyNonlinearVirtual) return; - - g_message("FocusOut on %lx", window); + +#ifdef DEBUG_FOCUS + g_message("FocusOut on %lx", window); +#endif /* Try process a FocusIn first, and if a legit one isn't found, then do the fallback shiznit. */ { @@ -356,14 +363,15 @@ static void event_handle_client(Client *client, XEvent *e) XEvent ce; Atom msgtype; int i=0; - ConfigValue focus_follow; switch (e->type) { case FocusIn: focus_set_client(client); case FocusOut: +#ifdef DEBUG_FOCUS g_message("Focus%s on client for %lx", (e->type==FocusIn?"In":"Out"), client->window); +#endif /* focus state can affect the stacking layer */ client_calc_layer(client); engine_frame_adjust_focus(client->frame); @@ -378,12 +386,8 @@ static void event_handle_client(Client *client, XEvent *e) client); focus_order[desktop] = g_list_prepend(focus_order[desktop], client); - } else { - if (!config_get("focusFollowsMouse",Config_Bool,&focus_follow)) - g_assert_not_reached(); - if (focus_follow.bool) - client_focus(client); - } + } else if (focus_follow) + client_focus(client); } break; case ConfigureRequest: