From def17d763b8b9cffc177190f82df7137001cbaee Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 26 Feb 2014 11:45:23 -0500 Subject: [PATCH] +e_comp_util_object_is_above_nocomp() --- src/bin/e_comp.c | 28 ++++++++++++++++++++++++++++ src/bin/e_comp.h | 1 + 2 files changed, 29 insertions(+) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 7d6b877ee..e20c487a9 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1829,3 +1829,31 @@ e_comp_client_redirect_toggle(E_Client *ec) ec->no_shape_cut = !ec->redirected; e_comp_shape_queue(ec->comp); } + +EAPI Eina_Bool +e_comp_util_object_is_above_nocomp(Evas_Object *obj) +{ + E_Comp *comp; + Evas_Object *o; + int cl, ol; + + EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE); + if (!evas_object_visible_get(obj)) return EINA_FALSE; + comp = e_comp_util_evas_object_comp_get(obj); + if (!comp->nocomp_ec) return EINA_FALSE; + cl = evas_object_layer_get(comp->nocomp_ec->frame); + ol = evas_object_layer_get(obj); + if (cl > ol) return EINA_FALSE; + o = evas_object_above_get(comp->nocomp_ec->frame); + if ((cl == ol) && (evas_object_layer_get(o) == cl)) + { + do { + if (o == obj) + return EINA_TRUE; + o = evas_object_above_get(o); + } while (o && (evas_object_layer_get(o) == cl)); + } + else + return EINA_TRUE; + return EINA_FALSE; +} diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index b69d0302c..3cb023840 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -167,6 +167,7 @@ EAPI E_Comp *e_comp_evas_find(const Evas *e); EAPI void e_comp_button_bindings_grab_all(void); EAPI void e_comp_button_bindings_ungrab_all(void); EAPI void e_comp_client_redirect_toggle(E_Client *ec); +EAPI Eina_Bool e_comp_util_object_is_above_nocomp(Evas_Object *obj); EINTERN Evas_Object *e_comp_style_selector_create(Evas *evas, const char **source); EAPI E_Config_Dialog *e_int_config_comp(E_Comp *comp, const char *params);