From: Junseok, Kim Date: Wed, 18 Mar 2020 12:28:56 +0000 (+0900) Subject: e_policy_visibility: check partial window with boolean when running uniconify_render X-Git-Tag: submit/tizen/20200403.093600~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ed15e73fa15bf1c8b43a1025eef8eb4f0102e65;p=platform%2Fupstream%2Fenlightenment.git e_policy_visibility: check partial window with boolean when running uniconify_render Change-Id: Idfb8f509fd4f7adb4e02035d6073ebe110383147 --- diff --git a/src/bin/e_policy_visibility.c b/src/bin/e_policy_visibility.c index 7d057407fc..365108886d 100644 --- a/src/bin/e_policy_visibility.c +++ b/src/bin/e_policy_visibility.c @@ -50,7 +50,7 @@ static void _e_vis_client_grab_remove(E_Vis_Client *vc, E_Vis_Grab static Eina_Bool _e_vis_client_grab_cancel(E_Vis_Client *vc); static void _e_vis_client_job_exec(E_Vis_Client *vc, E_Vis_Job_Type type); static Eina_Bool _e_vis_grab_job_filter(E_Vis_Grab *grab, E_Vis_Job_Type type); -static Eina_Bool _e_vis_ec_activity_check(E_Client *ec, E_Client *above, Eina_Bool check_alpha); +static Eina_Bool _e_vis_ec_activity_check(E_Client *ec, Eina_Bool check_alpha, Eina_Bool check_fullsize); static void _e_vis_ec_job_exec(E_Client *ec, E_Vis_Job_Type type); static void _e_vis_ec_setup(E_Client *ec); static void _e_vis_ec_reset(E_Client *ec); @@ -520,7 +520,7 @@ _e_vis_update_forground_list(void) if (!evas_object_visible_get(ec->frame)) continue; pol_vis->fg_clients = eina_list_append(pol_vis->fg_clients, ec); - if (_e_vis_ec_activity_check(ec, NULL, EINA_TRUE)) + if (_e_vis_ec_activity_check(ec, EINA_TRUE, EINA_TRUE)) { fg_activity = ec; break; @@ -1518,25 +1518,12 @@ _e_vis_ec_size_is_full(E_Client *ec) } static Eina_Bool -_e_vis_ec_activity_check(E_Client *ec, E_Client *above, Eina_Bool check_alpha) +_e_vis_ec_activity_check(E_Client *ec, Eina_Bool check_alpha, Eina_Bool check_fullsize) { int x, y, w, h; - int ax, ay, aw, ah; E_Comp_Object_Content_Type type = E_COMP_OBJECT_CONTENT_TYPE_NONE; int check_mapped = 1; - if (above) - { - e_client_geometry_get(above, &ax, &ay, &aw, &ah); - } - else - { - ax = ec->desk->geom.x; - ay = ec->desk->geom.y; - aw = ec->desk->geom.w; - ah = ec->desk->geom.h; - } - /* check if ignored */ if (e_client_util_ignored_get(ec)) return EINA_FALSE; /* check transparent */ @@ -1559,9 +1546,8 @@ _e_vis_ec_activity_check(E_Client *ec, E_Client *above, Eina_Bool check_alpha) /* check if full screen */ e_client_geometry_get(ec, &x, &y, &w, &h); E_RECTS_CLIP_TO_RECT(x, y, w, h, ec->desk->geom.x, ec->desk->geom.y, ec->desk->geom.w, ec->desk->geom.h); - E_RECTS_CLIP_TO_RECT(ax, ay, aw, ah, ec->desk->geom.x, ec->desk->geom.y, ec->desk->geom.w, ec->desk->geom.h); - if (!E_CONTAINS(ax, ay, aw, ah, x, y, w, h)) - return EINA_FALSE; + if (check_fullsize && + !E_CONTAINS(x, y, w, h, ec->desk->geom.x, ec->desk->geom.y, ec->desk->geom.w, ec->desk->geom.h)) return EINA_FALSE; /* check if obscured by force */ if (ec->visibility.force_obscured) return EINA_FALSE; @@ -1738,7 +1724,7 @@ _e_vis_ec_below_activity_clients_get(E_Client *ec, Eina_List **below_list) for (below = e_client_below_get(ec); below; below = e_client_below_get(below)) { - if (!_e_vis_ec_activity_check(below, ec, EINA_FALSE)) continue; + if (!_e_vis_ec_activity_check(below, EINA_FALSE, EINA_FALSE)) continue; E_VIS_CLIENT_GET(vc, below); if (!vc) continue; @@ -2115,7 +2101,7 @@ E_API Eina_Bool e_policy_visibility_client_is_activity(E_Client *ec) { EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE); - return _e_vis_ec_activity_check(ec, NULL, EINA_TRUE); + return _e_vis_ec_activity_check(ec, EINA_TRUE, EINA_TRUE); } E_API E_Vis_Grab *