E_FREE_LIST(l, evas_object_del);
}
-static void
-_e_comp_object_util_restack(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- if (e_comp_util_object_is_above_nocomp(obj) &&
- (!evas_object_data_get(obj, "comp_override")))
- {
- evas_object_data_set(obj, "comp_override", (void*)1);
- e_comp_override_add();
- }
-}
-
-static void
-_e_comp_object_util_show(void *data EINA_UNUSED, Evas_Object *obj)
-{
- Eina_Bool ref = EINA_TRUE;
- if (evas_object_visible_get(obj))
- {
- void *d;
-
- d = evas_object_data_del(obj, "comp_hiding");
- if (d)
- /* currently trying to hide */
- ref = EINA_FALSE;
- else
- /* already visible */
- return;
- }
-
- evas_object_show(obj);
- if (ref)
- {
- evas_object_ref(obj);
- evas_object_data_set(obj, "comp_ref", (void*)1);
- }
- 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
-_e_comp_object_util_hide(void *data EINA_UNUSED, Evas_Object *obj)
-{
- if (!evas_object_visible_get(obj)) return;
- /* already hiding */
- if (evas_object_data_get(obj, "comp_hiding")) return;
- if (!evas_object_data_del(obj, "comp_showing"))
- {
- evas_object_ref(obj);
- evas_object_data_set(obj, "comp_ref", (void*)1);
- }
- edje_object_signal_emit(obj, "e,state,hidden", "e");
- evas_object_data_set(obj, "comp_hiding", (void*)1);
-
- if (evas_object_data_del(obj, "comp_override"))
- e_comp_override_timed_pop();
-}
-
-static void
-_e_comp_object_util_done_defer(void *data, Evas_Object *obj, const char *emission, const char *source EINA_UNUSED)
-{
- if (!e_util_strcmp(emission, "e,action,hide,done"))
- {
- if (!evas_object_data_del(obj, "comp_hiding")) return;
- evas_object_intercept_hide_callback_del(obj, _e_comp_object_util_hide);
- evas_object_hide(obj);
- evas_object_intercept_hide_callback_add(obj, _e_comp_object_util_hide, data);
- }
- else
- evas_object_data_del(obj, "comp_showing");
- if (evas_object_data_del(obj, "comp_ref"))
- evas_object_unref(obj);
-}
-
-static void
-_e_comp_object_util_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- if (data)
- {
- int w, h;
-
- evas_object_geometry_get(obj, NULL, NULL, &w, &h);
- }
-}
-
E_API E_Comp_Object_Hook *
e_comp_object_hook_add(E_Comp_Object_Hook_Point hookpoint, E_Comp_Object_Hook_Cb func, const void *data)
{
}
#endif
-E_API Evas_Object *
-e_comp_object_util_add(Evas_Object *obj)
-{
- Evas_Object *o;
- const char *name;
- Eina_Bool skip = EINA_FALSE;
- int x, y, w, h;
- Eina_Bool vis;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
-
- name = evas_object_name_get(obj);
- vis = evas_object_visible_get(obj);
- o = edje_object_add(e_comp_evas_get());
- evas_object_data_set(o, "comp_object", (void*)1);
- if (name)
- skip = (!strncmp(name, "noshadow", 8));
- if (skip)
- evas_object_data_set(o, "comp_object_skip", (void*)1);
-
- e_theme_edje_object_set(o, "base/theme/comp", "e/comp/frame/default");
-
- evas_object_geometry_get(obj, &x, &y, &w, &h);
- evas_object_geometry_set(o, x, y, w, h);
- evas_object_pass_events_set(o, evas_object_pass_events_get(obj));
-
- edje_object_signal_callback_add(o, "e,action,*,done", "e", _e_comp_object_util_done_defer, NULL);
-
- evas_object_intercept_show_callback_add(o, _e_comp_object_util_show, NULL);
- evas_object_intercept_hide_callback_add(o, _e_comp_object_util_hide, NULL);
- evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _e_comp_object_util_moveresize, NULL);
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _e_comp_object_util_del, NULL);
- evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, _e_comp_object_util_moveresize, NULL);
- evas_object_event_callback_add(o, EVAS_CALLBACK_RESTACK, _e_comp_object_util_restack, NULL);
-
- e_comp_object_signal_emit(o, "e,state,hidden", "e");
-
- edje_object_part_swallow(o, "e.swallow.content", obj);
-
- _e_comp_object_event_add(o);
-
- if (vis)
- evas_object_show(o);
-
- return o;
-}
-
/* utility functions for deleting objects when their "owner" is deleted */
EINTERN void
e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_del)