The focus may be changed at E_POLICY_HOOK_CLIENT_STACK_TRANSIENT_FOR_DONE callback.
Change-Id: I19b29de877dd66fcd62e1d73ecc1b410424d8ad8
Eina_List *ec_hooks;
Eina_List *co_hooks;
Eina_List *zone_hooks;
+ Eina_List *policy_hooks;
};
static void
}
static void
+_focus_policy_history_hook_cb_policy_client_stack_transient_for_done(void *data, E_Client *ec)
+{
+ // TODO:
+}
+
+static void
_focus_policy_history_del(E_Focus_Policy_Impl *impl)
{
E_Focus_Policy_History *history_policy = (E_Focus_Policy_History *)impl;
E_Focus_Policy_Iface *policy_iface;
E_Focus_Policy_History *history_policy;
E_Zone_Hook *zone_hook;
+ E_Policy_Hook *policy_hook;
policy_iface = E_NEW(E_Focus_Policy_Iface, 1);
EINA_SAFETY_ON_NULL_RETURN_VAL(policy_iface, NULL);
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);
+ // e_policy hooks
+ policy_hook = e_policy_hook_add(E_POLICY_HOOK_CLIENT_STACK_TRANSIENT_FOR_DONE, _focus_policy_history_hook_cb_policy_client_stack_transient_for_done, history_policy);
+ if (policy_hook) history_policy->policy_hooks = eina_list_append(history_policy->zone_hooks, policy_hook);
+
return policy_iface;
fail:
[E_POLICY_HOOK_CLIENT_ROTATION_GEOMETRY_SET] = NULL,
[E_POLICY_HOOK_CLIENT_STACK_MODE_SET] = NULL,
[E_POLICY_HOOK_CLIENT_AUX_HINT_CHANGED] = NULL,
+//#ifdef REFACTOR_FOCUS_POLICY
+ [E_POLICY_HOOK_CLIENT_STACK_TRANSIENT_FOR_DONE] = NULL,
+//#endif
};
E_API int E_EVENT_POLICY_QUICKPANEL_VISIBLE_STATE_CHANGE = -1;
E_POLICY_HOOK_CLIENT_ROTATION_GEOMETRY_SET,
E_POLICY_HOOK_CLIENT_STACK_MODE_SET,
E_POLICY_HOOK_CLIENT_AUX_HINT_CHANGED,
+//#ifdef REFACTOR_FOCUS_POLICY
+ E_POLICY_HOOK_CLIENT_STACK_TRANSIENT_FOR_DONE,
+//#endif
E_POLICY_HOOK_LAST
} E_Policy_Hook_Point;
ec->post_lower = EINA_FALSE;
}
}
+
+#ifdef REFACTOR_FOCUS_POLICY
+ e_policy_hook_call(E_POLICY_HOOK_CLIENT_STACK_TRANSIENT_FOR_DONE, ec);
+#endif
}
Eina_Bool
static void
_e_policy_stack_fetch_transient(E_Client *ec)
{
+#ifdef REFACTOR_FOCUS_POLICY
+#else
E_Client *new_focus = NULL;
+#endif
E_Client *parent = NULL;
if (!ec->icccm.fetch.transient_for) return;
_e_policy_stack_transient_for_apply(ec);
+#ifdef REFACTOR_FOCUS_POLICY
+ // This code executes E_POLICY_HOOK_CLIENT_STACK_TRANSIENT_FOR_DONE callback at e_focus_policy_history.c
+#else
if (ec->parent)
{
if (ec->parent == e_client_focused_get())
}
}
}
+#endif
ec->icccm.fetch.transient_for = EINA_FALSE;
}