From: Doyoun Kang Date: Sun, 1 Oct 2023 05:41:00 +0000 (+0900) Subject: e_client: add e_client_base_output_resolution_desk_useful_geometry_get API X-Git-Tag: accepted/tizen/unified/20231007.143546~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F25%2F299525%2F1;p=platform%2Fupstream%2Fenlightenment.git e_client: add e_client_base_output_resolution_desk_useful_geometry_get API We add a API for getting useful geometry with obstacle area (optional) Change-Id: If7c9ec1f548e336e36e938a31743ab0e805cabab --- diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 8cedb3d..2c22684 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -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 +} diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 8a91146..55a6017 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -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); diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index 594ad9b..7f5b7c2 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -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); } /** diff --git a/src/bin/e_zone.h b/src/bin/e_zone.h index b9a9c88..cd76c20 100644 --- a/src/bin/e_zone.h +++ b/src/bin/e_zone.h @@ -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);