From: Doyoun Kang Date: Tue, 17 Oct 2017 04:45:06 +0000 (+0900) Subject: e_policy_visibility: fix bug for deiconify_approve X-Git-Tag: accepted/tizen/unified/20171019.145450~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F38%2F156038%2F1;p=platform%2Fupstream%2Fenlightenment.git e_policy_visibility: fix bug for deiconify_approve The child window didn't send uniconify event when it set transient for a parent window which is running deiconify_approve for activation. In this case, the child window didn't render because its internal state is iconic. Change-Id: Ie375ec92004223f9630df3077cdc919420f9c4ee --- diff --git a/src/bin/e_policy_visibility.c b/src/bin/e_policy_visibility.c index 8307279..569c052 100644 --- a/src/bin/e_policy_visibility.c +++ b/src/bin/e_policy_visibility.c @@ -65,6 +65,30 @@ static Eina_Inlist *_e_pol_vis_hooks[] = static int _e_pol_vis_hooks_delete = 0; static int _e_pol_vis_hooks_walking = 0; +static inline Eina_Bool +_e_vis_client_is_grabbed(E_Vis_Client *vc) +{ + return !!vc->job.grab_list; +} + +static inline Eina_Bool +_e_vis_client_is_iconic(E_Vis_Client *vc) +{ + return (vc->state == E_VIS_ICONIFY_STATE_ICONIC); +} + +static inline Eina_Bool +_e_vis_client_is_uniconic(E_Vis_Client *vc) +{ + return (vc->state == E_VIS_ICONIFY_STATE_UNICONIC); +} + +static inline Eina_Bool +_e_vis_client_is_uniconify_render_running(E_Vis_Client *vc) +{ + return (vc->state == E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY); +} + static void _e_pol_vis_hooks_clean(void) { @@ -259,7 +283,19 @@ _e_policy_client_iconify_by_visibility(E_Client *ec) if (ec->parent) { if (ec->parent->visibility.obscured == E_VISIBILITY_FULLY_OBSCURED) - _e_policy_client_iconify_by_visibility(ec->parent); + { + _e_policy_client_iconify_by_visibility(ec->parent); + + E_VIS_CLIENT_GET(vc, ec->parent); + if (vc) + { + if (_e_vis_client_is_uniconify_render_running(vc)) + { + VS_INF(ec, "Uniconify render because parent(win:%x, ec:%p)", e_client_util_win_get(ec->parent), ec->parent); + e_policy_visibility_client_uniconify(ec, !ec->parent->exp_iconify.not_raise); + } + } + } } } @@ -665,30 +701,6 @@ _e_vis_grab_release(E_Vis_Grab *grab) _e_vis_grab_del(grab); } -static inline Eina_Bool -_e_vis_client_is_grabbed(E_Vis_Client *vc) -{ - return !!vc->job.grab_list; -} - -static inline Eina_Bool -_e_vis_client_is_iconic(E_Vis_Client *vc) -{ - return (vc->state == E_VIS_ICONIFY_STATE_ICONIC); -} - -static inline Eina_Bool -_e_vis_client_is_uniconic(E_Vis_Client *vc) -{ - return (vc->state == E_VIS_ICONIFY_STATE_UNICONIC); -} - -static inline Eina_Bool -_e_vis_client_is_uniconify_render_running(E_Vis_Client *vc) -{ - return (vc->state == E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY); -} - static Eina_Bool _e_vis_client_cb_buffer_attach(void *data, int type EINA_UNUSED, void *event) {