X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus.c;h=541cf0101453b461e45726aa42424c7c0cef7d83;hb=d5f9df0845eb28dee542a789e43ca4cc1b6d0a4f;hp=523c7b5d057cf262181a65f38bffe2f20c71475a;hpb=5f5160b40c89c28a7e86dc66c08d1788bb6b0f1d;p=chaz%2Fopenbox diff --git a/openbox/focus.c b/openbox/focus.c index 523c7b5d..541cf010 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -119,23 +119,10 @@ void focus_set_client(ObClient *client) static gboolean focus_under_pointer() { - int x, y; - GList *it; + ObClient *c; - if (screen_pointer_pos(&x, &y)) { - for (it = stacking_list; it != NULL; it = it->next) { - if (WINDOW_IS_CLIENT(it->data)) { - ObClient *c = WINDOW_AS_CLIENT(it->data); - if (c->desktop == screen_desktop && - RECT_CONTAINS(c->frame->area, x, y)) - break; - } - } - if (it != NULL) { - g_assert(WINDOW_IS_CLIENT(it->data)); - return client_normal(it->data) && client_focus(it->data); - } - } + if ((c = client_under_pointer())) + return client_normal(c) && client_focus(c); return FALSE; } @@ -180,8 +167,9 @@ void focus_fallback(ObFocusFallbackType type) */ focus_set_client(NULL); - if (config_focus_follow && focus_under_pointer()) - return; + if (!config_focus_last && config_focus_follow) + if (focus_under_pointer()) + return; if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) { /* try for transient relations */