ConfigValue focus_follow;
GList *it;
gboolean under = FALSE;
+ Client *old = NULL;
+
+ old = focus_client;
+
+ /* unfocus any focused clients.. they can be focused by Pointer events
+ and such, and then when I try focus them, I won't get a FocusIn event
+ at all for them.
+ */
+ focus_set_client(NULL);
if (switching_desks) {
/* don't skip any windows when switching desktops */
- focus_client = NULL;
+ old = NULL;
} else {
if (!config_get("focusFollowsMouse", Config_Bool, &focus_follow))
g_assert_not_reached();
if (!under) {
for (it = focus_order[screen_desktop]; it != NULL; it = it->next)
- if (it->data != focus_client && client_normal(it->data))
+ if (it->data != old && client_normal(it->data))
if (client_focus(it->data))
break;
if (it == NULL) /* nothing to focus */