discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=9b36b9b78c8041485b5f1c1785865ce45631f841
commit 9b36b9b78c8041485b5f1c1785865ce45631f841 Author: Mike Blumenkrantz <[email protected]> Date: Wed Jan 29 13:25:38 2014 -0500 remove comp iconify hacks (and e_iconify api), expand comp object effect api instead of adding specific handling which will work (sometimes) in one specific case, expand already-existing api to provide the needed functionality for iconify animations. now on emitting any signal to a comp object, optional glob-able effect providers can be hooked and prioritized to add effect animations also use animating flags now when applying an object effect a base effect is provided in elementary, but now each module which wants to hook iconify animations (or other events) can do so in the theme and have different animations with their module --- src/bin/Makefile.mk | 2 - src/bin/e_comp_object.c | 139 ++++++++++++++++++++++++++--------------- src/bin/e_comp_object.h | 5 ++ src/bin/e_includes.h | 1 - src/modules/ibar/e_mod_main.c | 57 ++++++++--------- src/modules/ibox/e_mod_main.c | 59 +++++++++++------ src/modules/tasks/e_mod_main.c | 36 ++++++++--- 7 files changed, 189 insertions(+), 110 deletions(-) diff --git a/src/bin/Makefile.mk b/src/bin/Makefile.mk index 6c7ad6f..5aa474b 100644 --- a/src/bin/Makefile.mk +++ b/src/bin/Makefile.mk @@ -101,7 +101,6 @@ src/bin/e_grab_dialog.h \ src/bin/e.h \ src/bin/e_hints.h \ src/bin/e_icon.h \ -src/bin/e_iconify.h \ src/bin/e_ilist.h \ src/bin/e_import_config_dialog.h \ src/bin/e_import_dialog.h \ @@ -267,7 +266,6 @@ src/bin/e_grabinput.c \ src/bin/e_grab_dialog.c \ src/bin/e_hints.c \ src/bin/e_icon.c \ -src/bin/e_iconify.c \ src/bin/e_ilist.c \ src/bin/e_import_config_dialog.c \ src/bin/e_import_dialog.c \ diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index da5d863..59b7ba6 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -71,8 +71,8 @@ typedef struct _E_Comp_Object unsigned int opacity; // opacity set with _NET_WM_WINDOW_OPACITY + unsigned int animating; // it's busy animating Eina_Bool delete_pending : 1; // delete pendig - Eina_Bool animating : 1; // it's busy animating - defer hides/dels Eina_Bool defer_hide : 1; // flag to get hide to work on deferred hide Eina_Bool visible : 1; // is visible @@ -95,6 +95,17 @@ typedef struct _E_Comp_Object Eina_Bool force_move : 1; } E_Comp_Object; + +struct E_Comp_Object_Mover +{ + EINA_INLIST; + E_Comp_Object_Mover_Cb func; + const char *sig; + void *data; + int pri; +}; + +static Eina_Inlist *_e_comp_object_movers = NULL; static Evas_Smart *_e_comp_smart = NULL; /* sekrit functionzzz */ @@ -498,22 +509,12 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw) if (cw->visible || cw->ec->re_manage) e_comp_object_signal_emit(cw->smart_obj, "e,state,visible", "e"); else if (cw->ec->iconic) - { - e_iconify_provider_obj_message(cw->ec, EINA_TRUE, cw->shobj); - e_comp_object_signal_emit(cw->smart_obj, "e,action,iconify", "e"); - cw->ec->layer_block = 1; - evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO); - } + e_comp_object_signal_emit(cw->smart_obj, "e,action,iconify", "e"); else e_comp_object_signal_emit(cw->smart_obj, "e,state,hidden", "e"); if (cw->ec->iconic && cw->ec->re_manage) - { - e_iconify_provider_obj_message(cw->ec, EINA_TRUE, cw->shobj); - e_comp_object_signal_emit(cw->smart_obj, "e,action,iconify", "e"); - cw->ec->layer_block = 1; - evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO); - } + e_comp_object_signal_emit(cw->smart_obj, "e,action,iconify", "e"); if (!cw->zoomap_disabled) e_zoomap_child_set(cw->zoomobj, NULL); if (cw->frame_object) @@ -558,20 +559,12 @@ _e_comp_object_done_defer(void *data, Evas_Object *obj EINA_UNUSED, const char * CRI("ACK!"); if (cw->animating) { - cw->animating = 0; + cw->animating--; cw->comp->animating--; if (!e_object_unref(E_OBJECT(cw->ec))) return; } - if (cw->defer_hide && - ((!strcmp(emission, "e,action,hide,done")) || - (!strcmp(emission, "e,action,iconify,done")))) + if (cw->defer_hide && (!strcmp(emission, "e,action,hide,done"))) evas_object_hide(cw->smart_obj); - if ((!strcmp(emission, "e,action,iconify,done")) || - (!strcmp(emission, "e,action,uniconify,done"))) - { - cw->ec->layer_block = 0; - evas_object_layer_set(cw->smart_obj, cw->ec->layer); - } } ///////////////////////////////////////////// @@ -1150,22 +1143,20 @@ _e_comp_intercept_hide(void *data, Evas_Object *obj) { if ((!cw->ec->iconic) && (!cw->ec->override) && (!cw->ec->delete_requested)) e_hints_window_hidden_set(cw->ec); - cw->defer_hide = 1; if ((!cw->animating) || (cw->ec->iconic)) { - if (!cw->comp->animating) - cw->comp->animating++; - cw->animating = 1; - e_object_ref(E_OBJECT(cw->ec)); if (cw->ec->iconic) + e_comp_object_signal_emit(obj, "e,action,iconify", "e"); + else { - e_iconify_provider_obj_message(cw->ec, EINA_TRUE, cw->shobj); - e_comp_object_signal_emit(obj, "e,action,iconify", "e"); - cw->ec->layer_block = 1; - evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO); + e_comp_object_signal_emit(obj, "e,state,hidden", "e"); + cw->comp->animating++; + cw->animating = 1; + e_object_ref(E_OBJECT(cw->ec)); } - else - e_comp_object_signal_emit(obj, "e,state,hidden", "e"); + cw->defer_hide = cw->animating; + if (!cw->animating) + e_comp_object_effect_set(obj, NULL); } } if (cw->animating) return; @@ -1184,10 +1175,7 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw) { if (cw->ec->iconic && cw->animating) { - e_iconify_provider_obj_message(cw->ec, EINA_FALSE, cw->shobj); e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e"); - cw->ec->layer_block = 1; - evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO); cw->defer_hide = 0; } return; @@ -1838,18 +1826,16 @@ _e_comp_smart_show(Evas_Object *obj) e_comp_shape_queue(cw->comp); if (cw->ec->input_only) return; if (cw->ec->iconic) + e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e"); + else { - e_iconify_provider_obj_message(cw->ec, EINA_FALSE, cw->shobj); - e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e"); - cw->ec->layer_block = 1; - evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO); + e_comp_object_signal_emit(cw->smart_obj, "e,state,visible", "e"); + cw->comp->animating++; + cw->animating = 1; + e_object_ref(E_OBJECT(cw->ec)); } - else - e_comp_object_signal_emit(cw->smart_obj, "e,state,visible", "e"); if (!cw->animating) - cw->comp->animating++; - cw->animating = 1; - e_object_ref(E_OBJECT(cw->ec)); + e_comp_object_effect_set(obj, NULL); } static void @@ -2702,11 +2688,18 @@ reshadow: EAPI void e_comp_object_signal_emit(Evas_Object *obj, const char *sig, const char *src) { + E_Comp_Object_Mover *prov; + API_ENTRY; //INF("EMIT %p: %s %s", cw->ec, sig, src); edje_object_signal_emit(cw->shobj, sig, src); if (cw->frame_object) edje_object_signal_emit(cw->frame_object, sig, src); if (cw->frame_icon) edje_object_signal_emit(cw->frame_icon, sig, src); + EINA_INLIST_REVERSE_FOREACH(_e_comp_object_movers, prov) + { + if (!e_util_glob_match(sig, prov->sig)) continue; + if (prov->func(prov->data, obj, sig)) break; + } } EAPI void @@ -3256,16 +3249,24 @@ e_comp_object_effect_params_set(Evas_Object *obj, int id, int *params, unsigned } static void -_e_comp_object_effect_end_cb(void *data EINA_UNUSED, Evas_Object *obj, const char *emission, const char *source) +_e_comp_object_effect_end_cb(void *data, Evas_Object *obj, const char *emission, const char *source) { Edje_Signal_Cb end_cb; void *end_data; + E_Comp_Object *cw = data; + + edje_object_signal_callback_del_full(obj, "e,action,done", "e", _e_comp_object_effect_end_cb, NULL); + if (cw->animating) + { + cw->comp->animating--; + cw->animating--; + e_object_unref(E_OBJECT(cw->ec)); + } end_cb = evas_object_data_get(obj, "_e_comp.end_cb"); end_data = evas_object_data_get(obj, "_e_comp.end_data"); end_cb(end_data, obj, emission, source); - edje_object_signal_callback_del_full(obj, "e,action,done", "e", _e_comp_object_effect_end_cb, NULL); } EAPI void @@ -3296,11 +3297,14 @@ e_comp_object_effect_start(Evas_Object *obj, Edje_Signal_Cb end_cb, const void * e_comp_object_effect_clip(obj); edje_object_signal_callback_del_full(cw->effect_obj, "e,action,done", "e", _e_comp_object_effect_end_cb, NULL); - edje_object_signal_callback_add(cw->effect_obj, "e,action,done", "e", _e_comp_object_effect_end_cb, NULL); + edje_object_signal_callback_add(cw->effect_obj, "e,action,done", "e", _e_comp_object_effect_end_cb, cw); evas_object_data_set(cw->effect_obj, "_e_comp.end_cb", end_cb); evas_object_data_set(cw->effect_obj, "_e_comp.end_data", end_data); edje_object_signal_emit(cw->effect_obj, "e,action,go", "e"); + cw->comp->animating++; + cw->animating++; + e_object_ref(E_OBJECT(cw->ec)); } EAPI void @@ -3314,9 +3318,44 @@ e_comp_object_effect_stop(Evas_Object *obj, Edje_Signal_Cb end_cb EINA_UNUSED) cw->effect_clip = 0; } edje_object_signal_emit(cw->effect_obj, "e,action,stop", "e"); - edje_object_signal_callback_del_full(cw->effect_obj, "e,action,done", "e", _e_comp_object_effect_end_cb, NULL); + edje_object_signal_callback_del_full(cw->effect_obj, "e,action,done", "e", _e_comp_object_effect_end_cb, cw); + if (cw->animating) + { + cw->animating--; + cw->comp->animating--; + e_object_unref(E_OBJECT(cw->ec)); + } } +static int +_e_comp_object_effect_mover_sort_cb(E_Comp_Object_Mover *a, E_Comp_Object_Mover *b) +{ + return a->pri - b->pri; +} + +EAPI E_Comp_Object_Mover * +e_comp_object_effect_mover_add(int pri, const char *sig, E_Comp_Object_Mover_Cb provider, const void *data) +{ + E_Comp_Object_Mover *prov; + + prov = E_NEW(E_Comp_Object_Mover, 1); + EINA_SAFETY_ON_NULL_RETURN_VAL(prov, NULL); + prov->func = provider; + prov->data = (void*)data; + prov->pri = pri; + prov->sig = sig; + _e_comp_object_movers = eina_inlist_sorted_insert(_e_comp_object_movers, EINA_INLIST_GET(prov), + (Eina_Compare_Cb)_e_comp_object_effect_mover_sort_cb); + return prov; +} + +EAPI void +e_comp_object_effect_mover_del(E_Comp_Object_Mover *prov) +{ + EINA_SAFETY_ON_NULL_RETURN(prov); + _e_comp_object_movers = eina_inlist_remove(_e_comp_object_movers, EINA_INLIST_GET(prov)); + free(prov); +} //////////////////////////////////// static void diff --git a/src/bin/e_comp_object.h b/src/bin/e_comp_object.h index 1f55f5e..23b29b2 100644 --- a/src/bin/e_comp_object.h +++ b/src/bin/e_comp_object.h @@ -3,6 +3,9 @@ typedef struct E_Comp_Object_Frame E_Comp_Object_Frame; typedef struct E_Event_Comp_Object E_Event_Comp_Object; typedef void (*E_Comp_Object_Autoclose_Cb)(void *, Evas_Object *); typedef Eina_Bool (*E_Comp_Object_Key_Cb)(void *, Ecore_Event_Key *); +typedef Eina_Bool (*E_Comp_Object_Mover_Cb) (void *data, Evas_Object *comp_object, const char *signal); + +typedef struct E_Comp_Object_Mover E_Comp_Object_Mover; typedef enum { @@ -75,6 +78,8 @@ EAPI void e_comp_object_effect_clip(Evas_Object *obj); EAPI void e_comp_object_effect_unclip(Evas_Object *obj); EAPI void e_comp_object_effect_start(Evas_Object *obj, Edje_Signal_Cb end_cb, const void *end_data); EAPI void e_comp_object_effect_stop(Evas_Object *obj, Edje_Signal_Cb end_cb EINA_UNUSED); +EAPI E_Comp_Object_Mover *e_comp_object_effect_mover_add(int pri, const char *sig, E_Comp_Object_Mover_Cb provider, const void *data); +EAPI void e_comp_object_effect_mover_del(E_Comp_Object_Mover *prov); #endif #endif diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index be27124..79f7c75 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -154,4 +154,3 @@ #include "e_comp_cfdata.h" #include "e_comp_canvas.h" #include "e_utils.h" -#include "e_iconify.h" diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index bdcaa35..c9138ed 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -30,6 +30,7 @@ typedef struct _IBar_Icon IBar_Icon; struct _Instance { E_Gadcon_Client *gcc; + E_Comp_Object_Mover *iconify_provider; IBar *ibar; E_Drop_Handler *drop_handler; Config_Item *ci; @@ -215,36 +216,36 @@ _ibar_order_refresh(IBar *b, const char *path) } static void -_ibar_cb_iconify_provider(void *data, E_Client *ec, Eina_Bool iconify EINA_UNUSED, int *x, int *y, int *w, int *h) +_ibar_cb_iconify_end_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED) +{ + E_Client *ec = data; + + evas_object_layer_set(ec->frame, ec->layer); + ec->layer_block = 0; + if (ec->iconic) + evas_object_hide(ec->frame); +} + +static Eina_Bool +_ibar_cb_iconify_provider(void *data, Evas_Object *obj, const char *signal EINA_UNUSED) { Instance *inst = data; IBar_Icon *ic; - Evas_Coord ox, oy, ow, oh; + int ox, oy, ow, oh; + E_Client *ec; - EINA_INLIST_FOREACH(inst->ibar->icons, ic) - { - E_Exec_Instance *exe; - Eina_List *l; - - EINA_LIST_FOREACH(ic->exes, l, exe) - { - Eina_List *ll; - E_Client *ec2; - - EINA_LIST_FOREACH(exe->clients, ll, ec2) - { - if (ec == ec2) - { - evas_object_geometry_get(ic->o_holder, &ox, &oy, &ow, &oh); - *x = ox; - *y = oy; - *w = ow; - *h = oh; - return; - } - } - } - } + ec = e_comp_object_client_get(obj); + + ic = eina_hash_find(inst->ibar->icon_hash, _desktop_name_get(ec->exe_inst ? ec->exe_inst->desktop : ec->desktop)); + if (!ic) return EINA_FALSE; + ec->layer_block = 1; + evas_object_layer_set(ec->frame, E_LAYER_CLIENT_PRIO); + evas_object_geometry_get(ic->o_holder, &ox, &oy, &ow, &oh); + e_comp_object_effect_set(ec->frame, "iconify/ibar"); + e_comp_object_effect_params_set(ec->frame, 1, (int[]){ec->x, ec->y, ec->w, ec->h, ox, oy, ow, oh}, 8); + e_comp_object_effect_params_set(ec->frame, 0, (int[]){!!strcmp(signal, "e,action,iconify")}, 1); + e_comp_object_effect_start(ec->frame, _ibar_cb_iconify_end_cb, ec); + return EINA_TRUE; } static E_Gadcon_Client * @@ -282,7 +283,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) evas_object_event_callback_add(b->o_outerbox, EVAS_CALLBACK_RESIZE, _ibar_cb_obj_moveresize, inst); ibar_config->instances = eina_list_append(ibar_config->instances, inst); - e_iconify_provider_add(80, _ibar_cb_iconify_provider, inst); + inst->iconify_provider = e_comp_object_effect_mover_add(80, "e,action,*iconify", _ibar_cb_iconify_provider, inst); return gcc; } @@ -292,7 +293,7 @@ _gc_shutdown(E_Gadcon_Client *gcc) Instance *inst; inst = gcc->data; - e_iconify_provider_del(80, _ibar_cb_iconify_provider, inst); + e_comp_object_effect_mover_del(inst->iconify_provider); ibar_config->instances = eina_list_remove(ibar_config->instances, inst); e_drop_handler_del(inst->drop_handler); _ibar_free(inst->ibar); diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c index 16fb147..e1168b8 100644 --- a/src/modules/ibox/e_mod_main.c +++ b/src/modules/ibox/e_mod_main.c @@ -31,6 +31,7 @@ typedef struct _IBox_Icon IBox_Icon; struct _Instance { E_Gadcon_Client *gcc; + E_Comp_Object_Mover *iconify_provider; Evas_Object *o_ibox; IBox *ibox; E_Drop_Handler *drop_handler; @@ -117,32 +118,52 @@ static E_Config_DD *conf_item_edd = NULL; Config *ibox_config = NULL; static void -_ibox_cb_iconify_provider(void *data, E_Client *ec, Eina_Bool iconify EINA_UNUSED, int *x, int *y, int *w, int *h) +_ibox_cb_iconify_end_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED) +{ + E_Client *ec = data; + + evas_object_layer_set(ec->frame, ec->layer); + ec->layer_block = 0; + if (ec->iconic) + evas_object_hide(ec->frame); +} + +static Eina_Bool +_ibox_cb_iconify_provider(void *data, Evas_Object *obj, const char *signal) { Instance *inst = data; IBox_Icon *ic; Evas_Coord ox, oy, ow, oh; Eina_List *l; - - EINA_LIST_FOREACH(inst->ibox->icons, l, ic) + E_Client *ec; + + ec = e_comp_object_client_get(obj); + if (!strcmp(signal, "e,action,uniconify")) { - if (ic->client == ec) + EINA_LIST_FOREACH(inst->ibox->icons, l, ic) { - evas_object_geometry_get(ic->o_holder, &ox, &oy, &ow, &oh); - *x = ox; - *y = oy; - *w = ow; - *h = oh; - return; + if (ic->client == ec) + { + evas_object_geometry_get(ic->o_holder, &ox, &oy, &ow, &oh); + break; + } } } - // XXX: ibox doesn't know yet where a new icon might go... so assume right - // edge of ibox - evas_object_geometry_get(inst->ibox->o_box, &ox, &oy, &ow, &oh); - *x = ox + ow - 1; - *y = oy + (oh / 2); - *w = 1; - *h = 1; + else + { + // XXX: ibox doesn't know yet where a new icon might go... so assume right + // edge of ibox + evas_object_geometry_get(inst->ibox->o_box, &ox, &oy, &ow, &oh); + ox += ow - 1; + oy += (oh / 2); + } + ec->layer_block = 1; + evas_object_layer_set(ec->frame, E_LAYER_CLIENT_PRIO); + e_comp_object_effect_set(ec->frame, "iconify/ibox"); + e_comp_object_effect_params_set(ec->frame, 1, (int[]){ec->x, ec->y, ec->w, ec->h, ox, oy, ow, oh}, 8); + e_comp_object_effect_params_set(ec->frame, 0, (int[]){!!strcmp(signal, "e,action,iconify")}, 1); + e_comp_object_effect_start(ec->frame, _ibox_cb_iconify_end_cb, ec); + return EINA_TRUE; } static E_Gadcon_Client * @@ -187,7 +208,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) ibox_config->instances = eina_list_append(ibox_config->instances, inst); // add highest priority iconify provider - tasks and ibar can do this // but lower priority - e_iconify_provider_add(100, _ibox_cb_iconify_provider, inst); + inst->iconify_provider = e_comp_object_effect_mover_add(100, "e,action,*iconify", _ibox_cb_iconify_provider, inst); return gcc; } @@ -197,7 +218,7 @@ _gc_shutdown(E_Gadcon_Client *gcc) Instance *inst; inst = gcc->data; - e_iconify_provider_del(100, _ibox_cb_iconify_provider, inst); + e_comp_object_effect_mover_del(inst->iconify_provider); inst->ci->gcc = NULL; ibox_config->instances = eina_list_remove(ibox_config->instances, inst); e_drop_handler_del(inst->drop_handler); diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c index ce69e88..83a411e 100644 --- a/src/modules/tasks/e_mod_main.c +++ b/src/modules/tasks/e_mod_main.c @@ -32,6 +32,7 @@ typedef struct _Tasks_Item Tasks_Item; struct _Tasks { E_Gadcon_Client *gcc; // The gadcon client + E_Comp_Object_Mover *iconify_provider; Evas_Object *o_items; // Table of items Eina_List *items; // List of items Eina_List *clients; // List of clients @@ -325,27 +326,42 @@ _gc_id_new(const E_Gadcon_Client_Class *client_class __UNUSED__) } /***************************************************************************/ - static void -_tasks_cb_iconify_provider(void *data, E_Client *ec, Eina_Bool iconify EINA_UNUSED, int *x, int *y, int *w, int *h) +_tasks_cb_iconify_end_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED) +{ + E_Client *ec = data; + + evas_object_layer_set(ec->frame, ec->layer); + ec->layer_block = 0; + if (ec->iconic) + evas_object_hide(ec->frame); +} + +static Eina_Bool +_tasks_cb_iconify_provider(void *data, Evas_Object *obj, const char *signal) { Tasks *tasks = data; Tasks_Item *item; Evas_Coord ox, oy, ow, oh; Eina_List *l; - + E_Client *ec; + + ec = e_comp_object_client_get(obj); EINA_LIST_FOREACH(tasks->items, l, item) { if (item->client == ec) { evas_object_geometry_get(item->o_item, &ox, &oy, &ow, &oh); - *x = ox; - *y = oy; - *w = ow; - *h = oh; - return; + ec->layer_block = 1; + evas_object_layer_set(ec->frame, E_LAYER_CLIENT_PRIO); + e_comp_object_effect_set(ec->frame, "iconify/tasks"); + e_comp_object_effect_params_set(ec->frame, 1, (int[]){ec->x, ec->y, ec->w, ec->h, ox, oy, ow, oh}, 8); + e_comp_object_effect_params_set(ec->frame, 0, (int[]){!!strcmp(signal, "e,action,iconify")}, 1); + e_comp_object_effect_start(ec->frame, _tasks_cb_iconify_end_cb, ec); + return EINA_TRUE; } } + return EINA_FALSE; } static Tasks * @@ -369,7 +385,7 @@ _tasks_new(Evas *evas, E_Zone *zone, const char *id) e_box_orientation_set(tasks->o_items, tasks->horizontal); e_box_align_set(tasks->o_items, 0.5, 0.5); tasks->zone = zone; - e_iconify_provider_add(90, _tasks_cb_iconify_provider, tasks); + tasks->iconify_provider = e_comp_object_effect_mover_add(90, "e,action,*iconify", _tasks_cb_iconify_provider, tasks); return tasks; } @@ -377,7 +393,7 @@ static void _tasks_free(Tasks *tasks) { Tasks_Item *item; - e_iconify_provider_del(90, _tasks_cb_iconify_provider, tasks); + e_comp_object_effect_mover_del(tasks->iconify_provider); EINA_LIST_FREE(tasks->items, item) _tasks_item_free(item); eina_list_free(tasks->clients); --
