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;
 

-- 


Reply via email to