From: Doyoun Kang Date: Tue, 26 Feb 2019 00:27:37 +0000 (+0900) Subject: e_policy_visibility: add a function not to uniconify below window X-Git-Tag: submit/tizen_4.0/20190710.052035~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1edf9f52430e49d0779bfd40b521fe081cf5a054;p=platform%2Fupstream%2Fenlightenment.git e_policy_visibility: add a function not to uniconify below window We add a e_policy_visibility_client_below_uniconify_skip_set() function. If a window set the below_uniconify_skip, then the below window of it is not uniconified when it is hidden. This function can be used by a module such as effect module. Change-Id: Icae9ca3c1fcd136228c0ab4e795f61928366387a --- diff --git a/src/bin/e_policy_visibility.c b/src/bin/e_policy_visibility.c index 932a4430f8..d101e1124a 100644 --- a/src/bin/e_policy_visibility.c +++ b/src/bin/e_policy_visibility.c @@ -91,6 +91,18 @@ _e_vis_client_is_uniconify_render_running(E_Vis_Client *vc) return (vc->state == E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY); } +static inline void +_e_vis_client_below_uniconify_skip_set(E_Vis_Client *vc, Eina_Bool skip) +{ + vc->skip_below_uniconify = skip; +} + +static inline Eina_Bool +_e_vis_client_is_below_uniconify_skip(E_Vis_Client *vc) +{ + return (vc->skip_below_uniconify == EINA_TRUE); +} + static void _e_pol_vis_hooks_clean(void) { @@ -1825,6 +1837,12 @@ _e_vis_intercept_hide(void *data EINA_UNUSED, E_Client *ec) return EINA_FALSE; } + if (_e_vis_client_is_below_uniconify_skip(vc)) + { + VS_DBG(ec, "Skip to uniconify below client"); + return EINA_TRUE; + } + if (_e_vis_ec_above_is_non_alpha_visible(ec, EINA_FALSE)) { VS_DBG(ec, "Obscured by above window."); @@ -2146,6 +2164,14 @@ e_policy_visibility_client_is_uniconify_render_running(E_Client *ec) return _e_vis_client_is_uniconify_render_running(vc); } +E_API void +e_policy_visibility_client_below_uniconify_skip_set(E_Client *ec, Eina_Bool skip) +{ + E_VIS_CLIENT_GET_OR_RETURN(vc, ec); + + _e_vis_client_below_uniconify_skip_set(vc, skip); +} + E_API E_Pol_Vis_Hook * e_policy_visibility_hook_add(E_Pol_Vis_Hook_Type type, E_Pol_Vis_Hook_Cb cb, const void *data) { diff --git a/src/bin/e_policy_visibility.h b/src/bin/e_policy_visibility.h index 1d4217747d..0602bf4a93 100644 --- a/src/bin/e_policy_visibility.h +++ b/src/bin/e_policy_visibility.h @@ -36,6 +36,7 @@ E_API void e_policy_visibility_hook_del(E_Pol_Vis_Hook *h E_API Eina_Bool e_policy_visibility_client_is_iconic(E_Client *ec); EINTERN Eina_Bool e_policy_visibility_client_is_uniconic(E_Client *ec); E_API Eina_Bool e_policy_visibility_client_is_uniconify_render_running(E_Client *ec); +E_API void e_policy_visibility_client_below_uniconify_skip_set(E_Client *ec, Eina_Bool skip); EINTERN void e_policy_visibility_client_defer_move(E_Client *ec); EINTERN void e_vis_client_send_pre_visibility_event(E_Client *ec); diff --git a/src/bin/e_policy_visibility_internal.h b/src/bin/e_policy_visibility_internal.h index eb57795b04..1ed4a25d12 100644 --- a/src/bin/e_policy_visibility_internal.h +++ b/src/bin/e_policy_visibility_internal.h @@ -157,6 +157,8 @@ struct _E_Vis_Client } job; Eina_Bool prepare_emitted; E_Layer layer; + + Eina_Bool skip_below_uniconify; }; struct _E_Vis_Job_Group