hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=2b7a8af2cebeaab71cf1bae708ce0237d2f63137
commit 2b7a8af2cebeaab71cf1bae708ce0237d2f63137 Author: Hermet Park <her...@hermet.pe.kr> Date: Sat Apr 23 13:53:37 2016 +0900 edc_navigator: fix item contents remaining bugs. Genlist reuses the contents unintendly. Definitely, This is a genlist bug and it looks a side effect of resuable contents feature. :( --- src/bin/edc_navigator.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/bin/edc_navigator.c b/src/bin/edc_navigator.c index 44aeef4..507c97c 100644 --- a/src/bin/edc_navigator.c +++ b/src/bin/edc_navigator.c @@ -52,6 +52,8 @@ struct programs_it_s Elm_Object_Item *it; Eina_List *programs; group_it *git; + + Evas_Object *content; //Stop all programs }; struct group_it_s @@ -96,6 +98,8 @@ struct program_it_s Elm_Object_Item *it; programs_it *pit; + Evas_Object *content; //Play button + Eina_Bool discarded : 1; }; @@ -775,6 +779,15 @@ gl_program_text_get_cb(void *data, Evas_Object *obj EINA_UNUSED, return strdup(spit->name); } +static void +gl_program_del_cb(void *data, Evas_Object *obj EINA_UNUSED) +{ + //FIXME: Genlist reuses this content and it breaks edc navigator. + //This is an absolutely bug. This del_cb() is a workaround for this. + program_it *pit = data; + evas_object_del(pit->content); +} + static Evas_Object * gl_program_content_get_cb(void *data EINA_UNUSED, Evas_Object *obj, const char *part) @@ -810,6 +823,8 @@ gl_program_content_get_cb(void *data EINA_UNUSED, Evas_Object *obj, elm_box_pack_end(box, btn); + pit->content = box; + return box; } @@ -1029,9 +1044,17 @@ gl_programs_text_get_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, return strdup("PROGRAMS"); } +static void +gl_programs_del_cb(void *data, Evas_Object *obj EINA_UNUSED) +{ + //FIXME: Genlist reuses this content and it breaks edc navigator. + //This is an absolutely bug. This del_cb() is a workaround for this. + programs_it *pit = data; + evas_object_del(pit->content); +} + static Evas_Object * -gl_programs_content_get_cb(void *data EINA_UNUSED, Evas_Object *obj, - const char *part) +gl_programs_content_get_cb(void *data, Evas_Object *obj, const char *part) { //1. Icon if (!strcmp("elm.swallow.icon", part)) @@ -1065,6 +1088,8 @@ gl_programs_content_get_cb(void *data EINA_UNUSED, Evas_Object *obj, elm_box_pack_end(box, btn); + pit->content = box; + return box; } @@ -1544,6 +1569,7 @@ edc_navigator_init(Evas_Object *parent) itc->item_style = "default"; itc->func.text_get = gl_programs_text_get_cb; itc->func.content_get = gl_programs_content_get_cb; + itc->func.del = gl_programs_del_cb; nd->programs_itc = itc; @@ -1552,6 +1578,7 @@ edc_navigator_init(Evas_Object *parent) itc->item_style = "default"; itc->func.text_get = gl_program_text_get_cb; itc->func.content_get = gl_program_content_get_cb; + itc->func.del = gl_program_del_cb; nd->program_itc = itc; --