From f03a787180ea4a50ecfa4f4d130bebd1da8fcc92 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Wed, 15 Apr 2020 11:30:08 +0900 Subject: [PATCH] e_client: add APIs (e_client_stack_above/e_client_stack_below) We add new APIs - e_client_stack_above - e_client_stack_below And we recommend that E and E's modules have to use these APIs instead of evas_object_stack_above and evas_object_stack_below. Change-Id: I1e31f2a3542fdf71139d31e07850703873279cbf --- src/bin/e_client.c | 30 ++++++++++++++++++++++++++---- src/bin/e_client.h | 4 ++++ src/bin/e_comp_wl_subsurface.c | 4 ++-- src/bin/e_policy_stack.c | 10 +++++----- src/bin/e_policy_wl.c | 2 +- src/bin/e_slot.c | 2 +- src/bin/e_test_helper.c | 4 ++-- 7 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 07c2365a04..e3f279e714 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -2275,17 +2275,17 @@ _e_client_cb_evas_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA if (child->transient_policy == E_TRANSIENT_ABOVE) { if (below) - evas_object_stack_below(child->frame, below->frame); + e_client_stack_below(child, below); else - evas_object_stack_above(child->frame, ec->frame); + e_client_stack_above(child, ec); below = child; } else if (child->transient_policy == E_TRANSIENT_BELOW) { if (above) - evas_object_stack_above(child->frame, above->frame); + e_client_stack_above(child, above); else - evas_object_stack_below(child->frame, ec->frame); + e_client_stack_below(child, ec); above = child; } @@ -7948,6 +7948,28 @@ e_client_lower(E_Client *ec) evas_object_lower(ec->frame); } +E_API void +e_client_stack_above(E_Client *ec, E_Client *above) +{ + if (!ec) return; + if (!ec->frame) return; + if (!above) return; + if (!above->frame) return; + + evas_object_stack_above(ec->frame, above->frame); +} + +E_API void +e_client_stack_below(E_Client *ec, E_Client *below) +{ + if (!ec) return; + if (!ec->frame) return; + if (!below) return; + if (!below->frame) return; + + evas_object_stack_below(ec->frame, below->frame); +} + static Eina_Bool _e_client_surface_tree_foreach_helper(E_Client *ec, E_Client_Surface_Tree_Foreach func, void *data) { diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 9aa39b5dc1..94221a0d1e 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -1231,6 +1231,10 @@ E_API Eina_Bool e_client_desk_group_set(E_Client *ec, E_Desk_Group *edg); E_API void e_client_raise(E_Client *ec); E_API void e_client_lower(E_Client *ec); +// ec is placed on the above +E_API void e_client_stack_above(E_Client *ec, E_Client *above); +// ec is placed under the below +E_API void e_client_stack_below(E_Client *ec, E_Client *below); EINTERN void e_client_surface_tree_foreach(E_Client *ec, E_Client_Surface_Tree_Foreach func, void *data); diff --git a/src/bin/e_comp_wl_subsurface.c b/src/bin/e_comp_wl_subsurface.c index 0684737a7c..f3d8329f67 100644 --- a/src/bin/e_comp_wl_subsurface.c +++ b/src/bin/e_comp_wl_subsurface.c @@ -41,7 +41,7 @@ _e_comp_wl_subsurface_restack(E_Client *ec) { if (!subc || !subc->comp_data || e_object_is_del(E_OBJECT(subc))) continue; subc->comp_data->sub.restacking = EINA_TRUE; - evas_object_stack_above(subc->frame, temp->frame); + e_client_stack_above(subc, temp); subc->comp_data->sub.restacking = EINA_FALSE; temp = subc; } @@ -51,7 +51,7 @@ _e_comp_wl_subsurface_restack(E_Client *ec) { if (!subc || !subc->comp_data || e_object_is_del(E_OBJECT(subc))) continue; subc->comp_data->sub.restacking = EINA_TRUE; - evas_object_stack_below(subc->frame, temp->frame); + e_client_stack_below(subc, temp); subc->comp_data->sub.restacking = EINA_FALSE; temp = subc; } diff --git a/src/bin/e_policy_stack.c b/src/bin/e_policy_stack.c index 62b7d26790..b43e4b18de 100644 --- a/src/bin/e_policy_stack.c +++ b/src/bin/e_policy_stack.c @@ -143,13 +143,13 @@ _e_policy_stack_transient_for_apply(E_Client *ec) } if (top) - evas_object_stack_above(ec->frame, top->frame); + e_client_stack_above(ec, top); else - evas_object_stack_above(ec->frame, ec->parent->frame); + e_client_stack_above(ec, ec->parent); } else if (ec->transient_policy == E_TRANSIENT_BELOW) { - evas_object_stack_below(ec->frame, ec->parent->frame); + e_client_stack_below(ec, ec->parent); } } @@ -398,7 +398,7 @@ e_policy_stack_below(E_Client *ec, E_Client *below_ec) EINA_SAFETY_ON_NULL_RETURN(below_ec); EINA_SAFETY_ON_NULL_RETURN(below_ec->frame); - evas_object_stack_below(ec->frame, below_ec->frame); + e_client_stack_below(ec, below_ec); e_comp_wl_subsurface_stack_update(below_ec); if (e_config->transient.iconify) { @@ -421,7 +421,7 @@ e_policy_stack_above(E_Client *ec, E_Client *above_ec) EINA_SAFETY_ON_NULL_RETURN(above_ec); EINA_SAFETY_ON_NULL_RETURN(above_ec->frame); - evas_object_stack_above(ec->frame, above_ec->frame); + e_client_stack_above(ec, above_ec); e_comp_wl_subsurface_stack_update(above_ec); if (e_config->transient.iconify) { diff --git a/src/bin/e_policy_wl.c b/src/bin/e_policy_wl.c index 6b4e181f13..9b1cbc3c0a 100644 --- a/src/bin/e_policy_wl.c +++ b/src/bin/e_policy_wl.c @@ -816,7 +816,7 @@ _e_policy_wl_tzsh_srv_tvsrv_bind_update(void) e_client_util_win_get(tzsh_srv_ec)); e_policy_stack_transient_for_set(tzsh_srv_ec, tzsh_client_ec); - evas_object_stack_below(tzsh_srv_ec->frame, tzsh_client_ec->frame); + e_client_stack_below(tzsh_srv_ec, tzsh_client_ec); } else { diff --git a/src/bin/e_slot.c b/src/bin/e_slot.c index 5f05f6d6a6..8d0d5de5a2 100644 --- a/src/bin/e_slot.c +++ b/src/bin/e_slot.c @@ -360,7 +360,7 @@ e_slot_raise(Evas_Object *obj) { ELOGF("SLOT", "e_slot_raise |raise ec - id:%d [cnt:%d]pid:%d", ec2, sd->id, cnt++, ec2->netwm.pid); if (top_ec == ec2) e_client_raise(ec2); - else evas_object_stack_below(ec2->frame, below_ec->frame); + else e_client_stack_below(ec2, below_ec); below_ec = ec2; } diff --git a/src/bin/e_test_helper.c b/src/bin/e_test_helper.c index 527486af3e..b247597c90 100644 --- a/src/bin/e_test_helper.c +++ b/src/bin/e_test_helper.c @@ -420,9 +420,9 @@ _e_test_helper_restack(Ecore_Window win, Ecore_Window target, int above) { if (above) - evas_object_stack_above(ec->frame, tec->frame); + e_client_stack_above(ec, tec); else - evas_object_stack_below(ec->frame, tec->frame); + e_client_stack_below(ec, tec); } } -- 2.34.1