The focus may be changed at E_ZONE_HOOK_FOCUS_RESET callback.
Change-Id: Ifcea814b689c5b519fa12c9d3a4b691ae4e6b8d2
evas_event_feed_mouse_out(e_comp->evas, 0, NULL);
evas_event_feed_mouse_in(e_comp->evas, 0, NULL);
if (e_client_focused_get()) return;
+
+#ifdef REFACTOR_FOCUS_POLICY
+ E_Zone *zone = e_zone_current_get();
+ if (!zone) return;
+ e_zone_focus_reset(zone);
+#else
if (e_config->focus_policy != E_FOCUS_MOUSE)
e_client_refocus();
+#endif
}
EINTERN Eina_Bool
evas_object_event_callback_del(obj, EVAS_CALLBACK_SHOW, _e_comp_object_autoclose_show);
_e_comp_object_autoclose_cleanup(1);
if (e_client_focused_get()) return;
+
+#ifdef REFACTOR_FOCUS_POLICY
+ E_Zone *zone = e_zone_current_get();
+ if (!zone) return;
+ e_zone_focus_reset(zone);
+#else
if (e_config->focus_policy != E_FOCUS_MOUSE)
e_client_refocus();
+#endif
}
EINTERN void
}
static void
+_focus_policy_history_hook_cb_zone_focus_reset(void *data, E_Zone *zone)
+{
+ // TODO:
+}
+
+static void
_focus_policy_history_del(E_Focus_Policy_Impl *impl)
{
E_Focus_Policy_History *history_policy = (E_Focus_Policy_History *)impl;
// e_zone hooks
zone_hook = e_zone_hook_add(E_ZONE_HOOK_FOCUS_CLEAR, _focus_policy_history_hook_cb_zone_focus_clear, history_policy);
if (zone_hook) history_policy->zone_hooks = eina_list_append(history_policy->zone_hooks, zone_hook);
+ zone_hook = e_zone_hook_add(E_ZONE_HOOK_FOCUS_RESET, _focus_policy_history_hook_cb_zone_focus_reset, history_policy);
+ if (zone_hook) history_policy->zone_hooks = eina_list_append(history_policy->zone_hooks, zone_hook);
return policy_iface;
[E_ZONE_HOOK_SPLISCREEN_DEACTIVATE] = NULL,
//#ifdef REFACTOR_FOCUS_POLICY
[E_ZONE_HOOK_FOCUS_CLEAR] = NULL,
+ [E_ZONE_HOOK_FOCUS_RESET] = NULL,
//#endif
};
_e_zone_hook_call(E_ZONE_HOOK_FOCUS_CLEAR, zone);
}
+
+EINTERN void
+e_zone_focus_reset(E_Zone *zone)
+{
+ EINA_SAFETY_ON_NULL_RETURN(zone);
+
+ _e_zone_hook_call(E_ZONE_HOOK_FOCUS_RESET, zone);
+}
#endif
E_ZONE_HOOK_SPLISCREEN_DEACTIVATE,
//#ifdef REFACTOR_FOCUS_POLICY
E_ZONE_HOOK_FOCUS_CLEAR,
+ E_ZONE_HOOK_FOCUS_RESET,
//#endif
E_ZONE_HOOK_LAST
} E_Zone_Hook_Point;
EINTERN Eina_Bool e_zone_visibility_calculate(E_Zone *zone);
//#ifdef REFACTOR_FOCUS_POLICY
EINTERN void e_zone_focus_clear(E_Zone *zone);
+EINTERN void e_zone_focus_reset(E_Zone *zone);
//#endif
extern EINTERN int E_EVENT_ZONE_DESK_COUNT_SET;