static void _e_desk_window_profile_change_protocol_set(void);
#endif
+static Eina_Bool nofocus = EINA_FALSE;
+
EAPI int E_EVENT_DESK_SHOW = 0;
EAPI int E_EVENT_DESK_BEFORE_SHOW = 0;
EAPI int E_EVENT_DESK_AFTER_SHOW = 0;
/* this was the window last focused in this desktop */
if (!bd->lock_focus_out)
{
- e_border_focus_set_with_pointer(bd);
+ if (!nofocus) e_border_focus_set_with_pointer(bd);
return bd;
}
}
(e_config->focus_policy == E_FOCUS_SLOPPY))
{
if (e_config->focus_last_focused_per_desktop)
- e_desk_last_focused_focus(desk);
+ {
+
+ if (desk->zone == e_zone_current_get(desk->zone->container))
+ e_desk_last_focused_focus(desk);
+ else
+ {
+ /* block pointer warp if desk is not in current zone */
+ E_Border *bd;
+
+ nofocus = 1;
+ bd = e_desk_last_focused_focus(desk);
+ nofocus = 0;
+ if (bd) e_border_focus_set(bd, 1, 1);
+ }
+ }
}
else
{