e_client: add e_client_base_output_resolution_desk_useful_geometry_get API 25/299525/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Sun, 1 Oct 2023 05:41:00 +0000 (14:41 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 4 Oct 2023 06:22:43 +0000 (15:22 +0900)
We add a API for getting useful geometry with obstacle area (optional)

Change-Id: If7c9ec1f548e336e36e938a31743ab0e805cabab

src/bin/e_client.c
src/bin/e_client.h
src/bin/e_zone.c
src/bin/e_zone.h

index 8cedb3d..2c22684 100644 (file)
@@ -2555,7 +2555,7 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
                }
              else
                {
-                  e_zone_desk_useful_geometry_get(zone, ec->desk, &zx, &zy, &zw, &zh);
+                  e_zone_desk_useful_geometry_get(zone, ec->desk, &zx, &zy, &zw, &zh, EINA_TRUE);
                }
           }
         else
@@ -7832,6 +7832,34 @@ e_client_base_output_resolution_useful_geometry_get(E_Client *ec, int *x, int *y
    return EINA_TRUE;
 }
 
+E_API Eina_Bool
+e_client_base_output_resolution_desk_useful_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h, Eina_Bool consider_obstacle_area)
+{
+   int zx, zy, zw, zh;
+   E_Zone *zone;
+
+   E_OBJECT_CHECK_RETURN(ec, EINA_FALSE);
+
+   zone = e_comp_zone_find_by_ec(ec);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(zone, EINA_FALSE);
+
+   e_zone_desk_useful_geometry_get(zone, ec->desk, &zx, &zy, &zw, &zh, consider_obstacle_area);
+
+   if (x) *x = zx;
+   if (y) *y = zy;
+   if (w) *w = zw;
+   if (h) *h = zh;
+
+   if (ec->base_output_resolution.use)
+     {
+        // TODO: Consider obstacle area
+        if (w) *w = ec->base_output_resolution.w;
+        if (h) *h = ec->base_output_resolution.h;
+     }
+
+   return EINA_TRUE;
+}
+
 /* change the base_output_resolution of the bind_ec by checking the base_output_resolution of provider_ec's appinfo */
 EINTERN Eina_Bool
 e_client_base_output_resolution_rsm_update(E_Client *bind_ec, E_Client *provider_ec)
@@ -8851,4 +8879,4 @@ e_client_destroy_listener_get(E_Client *ec, wl_notify_func_t notify)
 {
    API_ENTRY_VAL(NULL);
    return wl_signal_get(&priv->events.destroy, notify);
-}
\ No newline at end of file
+}
index 8a91146..55a6017 100644 (file)
@@ -1271,6 +1271,8 @@ EINTERN E_Capture_Save_State e_client_image_save(E_Client *ec, const char *dir,
 E_API void      e_client_base_output_resolution_transform_adjust(E_Client *ec);
 E_API Eina_Bool e_client_base_output_resolution_update(E_Client *ec);
 E_API Eina_Bool e_client_base_output_resolution_useful_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h);
+E_API Eina_Bool e_client_base_output_resolution_desk_useful_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h, Eina_Bool consider_obstacle_area);
+
 EINTERN Eina_Bool e_client_base_output_resolution_rsm_update(E_Client *bind_ec, E_Client *provider_ec);
 
 E_API void e_client_focus_skip_set(E_Client *ec, Eina_Bool skip, Eina_Bool by_client);
index 594ad9b..7f5b7c2 100644 (file)
@@ -171,7 +171,7 @@ _e_zone_client_maximize(E_Zone *zone, E_Desk *desk, E_Client *ec, E_Maximize max
                }
              else
                {
-                  e_zone_desk_useful_geometry_get(zone, desk, &zx, &zy, &zw, &zh);
+                  e_zone_desk_useful_geometry_get(zone, desk, &zx, &zy, &zw, &zh, EINA_TRUE);
                }
           }
         else
@@ -1882,7 +1882,7 @@ e_zone_useful_geometry_get(E_Zone *zone,
 }
 
 EINTERN void
-e_zone_desk_useful_geometry_get(E_Zone *zone, E_Desk *desk, int *x, int *y, int *w, int *h)
+e_zone_desk_useful_geometry_get(E_Zone *zone, E_Desk *desk, int *x, int *y, int *w, int *h, Eina_Bool consider_obstacle_area)
 {
    E_OBJECT_CHECK(zone);
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
@@ -1896,7 +1896,10 @@ e_zone_desk_useful_geometry_get(E_Zone *zone, E_Desk *desk, int *x, int *y, int
         return;
      }
 
-   _e_zone_useful_geometry_calc(zone, desk, x, y, w, h);
+   if (consider_obstacle_area)
+     _e_zone_useful_geometry_calc(zone, desk, x, y, w, h);
+   else
+     e_zone_useful_geometry_get(zone, x, y, w, h);
 }
 
 /**
index b9a9c88..cd76c20 100644 (file)
@@ -210,7 +210,7 @@ EINTERN void      e_zone_obstacle_remove(E_Zone *zone, E_Client *ec);
 
 EINTERN void      e_zone_useful_geometry_dirty(E_Zone *zone);
 E_API void      e_zone_useful_geometry_get(E_Zone *zone, int *x, int *y, int *w, int *h);
-EINTERN void    e_zone_desk_useful_geometry_get(E_Zone *zone, E_Desk *desk, int *x, int *y, int *w, int *h);
+EINTERN void    e_zone_desk_useful_geometry_get(E_Zone *zone, E_Desk *desk, int *x, int *y, int *w, int *h, Eina_Bool consider_obstacle_area);
 
 E_API void                 e_zone_display_state_set(E_Zone *zone, E_Zone_Display_State state);
 EINTERN E_Zone_Display_State e_zone_display_state_get(E_Zone *zone);