e_comp->e_comp_screen = comp_screen;
}
-EINTERN Eina_Bool
-e_comp_util_object_is_above_nocomp(Evas_Object *obj)
-{
- Evas_Object *o;
- int cl, ol;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
- if (!evas_object_visible_get(obj)) return EINA_FALSE;
- if (!e_comp->nocomp_ec) return EINA_FALSE;
- cl = evas_object_layer_get(e_comp->nocomp_ec->frame);
- ol = evas_object_layer_get(obj);
- if (cl > ol) return EINA_FALSE;
- o = evas_object_above_get(e_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;
-}
-
E_API E_Comp_Hook *
e_comp_hook_add(E_Comp_Hook_Point hookpoint, E_Comp_Hook_Cb func, const void *data)
{
struct wl_list swallows;
struct wl_listener destroy;
- struct wl_listener restack;
};
typedef struct _E_View_Edje_Signal
E_View_Edje_Signal *signal, *signal_tmp;
E_View_Edje_Swallow *swallow, *swallow_tmp;
- if (edje->restack.notify != NULL)
- e_view_event_listener_del(view, E_VIEW_RESTACK, &edje->restack);
if (edje->destroy.notify != NULL)
e_view_event_listener_del(view, E_VIEW_DESTROY, &edje->destroy);
}
edje_object_signal_emit(obj, "e,state,visible", "e");
evas_object_data_set(obj, "comp_showing", (void*)1);
- if (e_comp_util_object_is_above_nocomp(obj))
- {
- evas_object_data_set(obj, "comp_override", (void*)1);
- e_comp_override_add();
- }
}
static void
wl_list_remove(&edje->destroy.link);
edje->destroy.notify = NULL;
- e_view_event_listener_del(edje_view, E_VIEW_RESTACK, &edje->restack);
- edje->restack.notify = NULL;
comp_object = !!e_view_data_get(edje_view, "comp_object");
if (comp_object)
E_FREE_LIST(l, evas_object_del);
}
-static void
-_e_view_edje_util_restack(struct wl_listener *listener, void *data)
-{
- E_View_Edje *edje;
- E_View *edje_view;
-
- edje = wl_container_of(listener, edje, restack);
- edje_view = e_view_edje_view_get(edje);
-
- if (e_comp_util_object_is_above_nocomp(edje_view->eo) &&
- (!e_view_data_get(edje_view, "comp_override")))
- {
- e_view_data_set(edje_view, "comp_override", (void*)1);
- e_comp_override_add();
- }
-}
-
static void
_e_view_edje_event_free(void *d EINA_UNUSED, void *event)
{
edje->destroy.notify = _e_view_edje_util_del;
e_view_event_listener_add(edje_view, E_VIEW_DESTROY, &edje->destroy);
- edje->restack.notify = _e_view_edje_util_restack;
- e_view_event_listener_add(edje_view, E_VIEW_RESTACK, &edje->restack);
-
e_view_edje_signal_emit(edje, "e,state,hidden", "e");
e_view_edje_part_swallow(edje, "e.swallow.content", view);