e_policy_visibility: check partial window with boolean when running uniconify_render 62/228062/2
authorJunseok, Kim <juns.kim@samsung.com>
Wed, 18 Mar 2020 12:28:56 +0000 (21:28 +0900)
committerJunseok, Kim <juns.kim@samsung.com>
Thu, 19 Mar 2020 02:44:32 +0000 (11:44 +0900)
Change-Id: Idfb8f509fd4f7adb4e02035d6073ebe110383147

src/bin/e_policy_visibility.c

index 777f484..a38acb3 100644 (file)
@@ -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 *