X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=7e0dc0aaf0aba1a1bf115fe59fdcb8fe580ac3c1;hb=e7d225b84a2460b7483e56e102cbc35815c945c2;hp=d1611f9e351bccd0fafc74a2a2d4e2f6a1856022;hpb=3139c3c7132e326e82183feb6fcea8dd38e6b41e;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index d1611f9e..7e0dc0aa 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -245,8 +245,12 @@ void event_process(XEvent *e) 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) + focus_fallback(FALSE); } else - focus_set_client(NULL); + focus_fallback(FALSE); } break; case EnterNotify: @@ -270,6 +274,8 @@ 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 */ @@ -343,17 +349,21 @@ static void event_handle_client(Client *client, XEvent *e) engine_frame_adjust_focus(client->frame); break; case EnterNotify: - if (ob_state == State_Starting) { - /* move it to the top of the focus order */ - guint desktop = client->desktop; - if (desktop == DESKTOP_ALL) desktop = screen_desktop; - focus_order[desktop] = g_list_remove(focus_order[desktop], 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); + if (client_normal(client)) { + if (ob_state == State_Starting) { + /* move it to the top of the focus order */ + guint desktop = client->desktop; + if (desktop == DESKTOP_ALL) desktop = screen_desktop; + focus_order[desktop] = g_list_remove(focus_order[desktop], + 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); + } } break; case ConfigureRequest: