jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=080c92658890bc3023aa2568c3f4679987a5154f

commit 080c92658890bc3023aa2568c3f4679987a5154f
Author: arosis <jh0506....@samsung.com>
Date:   Thu Aug 10 14:02:06 2017 +0900

    elm_ctxpopup: Implemented elm_widget_item_del_pre for elm_ctxpopup_item
    
    Summary:
    ctxpopup item have elm_list item internally.
    But when elm_ctxpopup item was deleted, elm_list item was not deleted.
    elm_list item in elm_ctxpopup item should be deleted in del_pre
    when elm_ctxpopup item is deleted by elm_wdg_item_del()
    
    Test Plan:
    1. launch elementary_test - ctxpopup
    2. click Ctxpopup with label only
    3. "Never Show" item should not shown in ctxpopup
    
    Reviewers: jpeg, cedric, woohyun
    
    Subscribers: cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D5044
---
 src/bin/elementary/test_ctxpopup.c      |  2 ++
 src/lib/elementary/elc_ctxpopup.c       | 17 +++++++++++++++++
 src/lib/elementary/elm_ctxpopup_item.eo |  1 +
 3 files changed, 20 insertions(+)

diff --git a/src/bin/elementary/test_ctxpopup.c 
b/src/bin/elementary/test_ctxpopup.c
index 0c1141211b..6be16a50f1 100644
--- a/src/bin/elementary/test_ctxpopup.c
+++ b/src/bin/elementary/test_ctxpopup.c
@@ -159,6 +159,8 @@ _list_item_cb3(void *data EINA_UNUSED, Evas_Object *obj, 
void *event_info EINA_U
    elm_object_item_disabled_set(it, EINA_TRUE);
    _ctxpopup_item_new(ctxpopup, "Embryo", NULL);
    _ctxpopup_item_new(ctxpopup, "Edje", NULL);
+   it = _ctxpopup_item_new(ctxpopup, "Never Show", NULL);
+   elm_object_item_del(it);
 
    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
    evas_object_move(ctxpopup, x, y);
diff --git a/src/lib/elementary/elc_ctxpopup.c 
b/src/lib/elementary/elc_ctxpopup.c
index 1a2071044e..9b42539d6b 100644
--- a/src/lib/elementary/elc_ctxpopup.c
+++ b/src/lib/elementary/elc_ctxpopup.c
@@ -907,6 +907,23 @@ _elm_ctxpopup_item_elm_widget_item_disable(Eo 
*eo_ctxpopup_it,
      (ctxpopup_it->list_item, elm_wdg_item_disabled_get(eo_ctxpopup_it));
 }
 
+EOLIAN static Eina_Bool
+_elm_ctxpopup_item_elm_widget_item_del_pre(Eo *eo_ctxpopup_it EINA_UNUSED,
+                                           Elm_Ctxpopup_Item_Data *ctxpopup_it)
+{
+   ELM_CTXPOPUP_DATA_GET(WIDGET(ctxpopup_it), sd);
+   if (!sd) return EINA_FALSE;
+
+   if (ctxpopup_it->list_item)
+     {
+        efl_unref(ctxpopup_it->list_item);
+        elm_wdg_item_del(ctxpopup_it->list_item);
+        ctxpopup_it->list_item = NULL;
+     }
+
+   return EINA_TRUE;
+}
+
 EOLIAN static void
 _elm_ctxpopup_item_elm_widget_item_signal_emit(Eo *eo_ctxpopup_it EINA_UNUSED,
                                                Elm_Ctxpopup_Item_Data 
*ctxpopup_it,
diff --git a/src/lib/elementary/elm_ctxpopup_item.eo 
b/src/lib/elementary/elm_ctxpopup_item.eo
index a6f14e222e..47dd0ff866 100644
--- a/src/lib/elementary/elm_ctxpopup_item.eo
+++ b/src/lib/elementary/elm_ctxpopup_item.eo
@@ -17,6 +17,7 @@ class Elm.Ctxpopup.Item(Elm.Widget.Item, Efl.Ui.Item)
         Efl.Object.destructor;
         Elm.Widget.Item.disable;
         Elm.Widget.Item.signal_emit;
+        Elm.Widget.Item.del_pre;
         Elm.Widget.Item.part_text { get; set; }
         Elm.Widget.Item.part_content { get; set; }
         Elm.Widget.Item.focus { get; set; }

-- 


Reply via email to