The focus may be changed at E_ZONE_HOOK_FOCUS_CLEAR callback.
Change-Id: I2ec7e4c15579fd14865fa28066e83c6e59c7f9e2
Eina_List *ec_hooks;
Eina_List *co_hooks;
+ Eina_List *zone_hooks;
};
static void
return EINA_TRUE;
}
+static void
+_focus_policy_history_hook_cb_zone_focus_clear(void *data, E_Zone *zone)
+{
+ // TODO:
+}
+
static void
_focus_policy_history_del(E_Focus_Policy_Impl *impl)
{
ELOGF("FOCUS", "delete history focus policy.", NULL);
+ E_FREE_LIST(history_policy->zone_hooks, e_zone_hook_del);
E_FREE_LIST(history_policy->co_hooks, e_comp_object_hook_del);
E_FREE_LIST(history_policy->ec_hooks, e_client_hook_del);
{
E_Focus_Policy_Iface *policy_iface;
E_Focus_Policy_History *history_policy;
+ E_Zone_Hook *zone_hook;
policy_iface = E_NEW(E_Focus_Policy_Iface, 1);
EINA_SAFETY_ON_NULL_RETURN_VAL(policy_iface, NULL);
E_COMP_COMP_HOOK_APPEND(history_policy->co_hooks, E_COMP_OBJECT_HOOK_SHOW, _focus_policy_history_hook_cb_comp_object_show, history_policy);
E_COMP_COMP_HOOK_APPEND(history_policy->co_hooks, E_COMP_OBJECT_HOOK_HIDE, _focus_policy_history_hook_cb_comp_object_hide, history_policy);
+ // 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);
+
return policy_iface;
fail:
Eina_List *ec_hooks;
Eina_List *co_hooks;
+ Eina_List *zone_hooks;
};
static void
return EINA_TRUE;
}
+static void
+_focus_policy_topmost_hook_cb_zone_focus_clear(void *data, E_Zone *zone)
+{
+ // TODO:
+}
+
static void
_focus_policy_topmost_del(E_Focus_Policy_Impl *impl)
{
if (!topmost_policy) return;
+ E_FREE_LIST(topmost_policy->zone_hooks, e_zone_hook_del);
E_FREE_LIST(topmost_policy->co_hooks, e_comp_object_hook_del);
E_FREE_LIST(topmost_policy->ec_hooks, e_client_hook_del);
{
E_Focus_Policy_Iface *policy_iface;
E_Focus_Policy_Topmost *topmost_policy;
+ E_Zone_Hook *zone_hook;
policy_iface = E_NEW(E_Focus_Policy_Iface, 1);
EINA_SAFETY_ON_NULL_RETURN_VAL(policy_iface, NULL);
E_COMP_COMP_HOOK_APPEND(topmost_policy->co_hooks, E_COMP_OBJECT_HOOK_LOWER, _focus_policy_hook_topmost_cb_comp_object_lower, topmost_policy);
E_COMP_COMP_HOOK_APPEND(topmost_policy->co_hooks, E_COMP_OBJECT_HOOK_MOVE, _focus_policy_topmost_hook_cb_comp_object_move, topmost_policy);
+ // e_zone hooks
+ zone_hook = e_zone_hook_add(E_ZONE_HOOK_FOCUS_CLEAR, _focus_policy_topmost_hook_cb_zone_focus_clear, topmost_policy);
+ if (zone_hook) topmost_policy->zone_hooks = eina_list_append(topmost_policy->zone_hooks, zone_hook);
+
return policy_iface;
fail:
[E_ZONE_HOOK_DISPLAY_STATE_CHANGE] = NULL,
[E_ZONE_HOOK_SPLISCREEN_ACTIVATE] = NULL,
[E_ZONE_HOOK_SPLISCREEN_DEACTIVATE] = NULL,
+//#ifdef REFACTOR_FOCUS_POLICY
+ [E_ZONE_HOOK_FOCUS_CLEAR] = NULL,
+//#endif
};
return e_visibility_changed;
}
+
+#ifdef REFACTOR_FOCUS_POLICY
+EINTERN void
+e_zone_focus_clear(E_Zone *zone)
+{
+ EINA_SAFETY_ON_NULL_RETURN(zone);
+
+ _e_zone_hook_call(E_ZONE_HOOK_FOCUS_CLEAR, zone);
+}
+#endif
E_ZONE_HOOK_DISPLAY_STATE_CHANGE,
E_ZONE_HOOK_SPLISCREEN_ACTIVATE,
E_ZONE_HOOK_SPLISCREEN_DEACTIVATE,
+//#ifdef REFACTOR_FOCUS_POLICY
+ E_ZONE_HOOK_FOCUS_CLEAR,
+//#endif
E_ZONE_HOOK_LAST
} E_Zone_Hook_Point;
EINTERN Eina_Bool e_zone_has_ec(E_Zone *zone, E_Client *ec);
EINTERN Eina_Bool e_zone_is_displaying(E_Zone *zone);
EINTERN Eina_Bool e_zone_visibility_calculate(E_Zone *zone);
+//#ifdef REFACTOR_FOCUS_POLICY
+EINTERN void e_zone_focus_clear(E_Zone *zone);
+//#endif
extern EINTERN int E_EVENT_ZONE_DESK_COUNT_SET;
extern E_API int E_EVENT_ZONE_MOVE_RESIZE;