seoz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=f8b9adae538f4f7d6f3fd44328ee967b08e2f33d

commit f8b9adae538f4f7d6f3fd44328ee967b08e2f33d
Author: Daniel Juyung Seo <seojuyu...@gmail.com>
Date:   Sat Sep 21 20:22:10 2013 +0900

    elm_menu: added elm_menu_item_subitems_clear.
---
 ChangeLog                 |  4 ++++
 NEWS                      |  1 +
 src/lib/elm_menu.c        | 16 +++++++++++++---
 src/lib/elm_menu_common.h | 15 +++++++++++++++
 4 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 42f9639..947f1be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1644,3 +1644,7 @@
 2013-09-21  Daniel Juyung Seo (SeoZ)
 
         * menu: added "dismissed" callback.
+
+2013-09-21  Daniel Juyung Seo (SeoZ)
+
+        * menu: added elm_menu_item_subitems_clear.
diff --git a/NEWS b/NEWS
index 2295473..e7747ed 100644
--- a/NEWS
+++ b/NEWS
@@ -93,6 +93,7 @@ Additions:
    * Add elm_widget_item_part_text_custom_set(), 
elm_widget_item_part_text_custom_get(), 
elm_widget_item_part_text_custom_update(). 
    * Add "dismissed" smart callback for hover.
    * Add "dismissed" smart callback for menu.
+   * Add elm_menu_item_subitems_clear().
 
 Improvements:
 
diff --git a/src/lib/elm_menu.c b/src/lib/elm_menu.c
index 7572473..0d02169 100644
--- a/src/lib/elm_menu.c
+++ b/src/lib/elm_menu.c
@@ -897,12 +897,10 @@ static Eina_Bool
 _item_del_pre_hook(Elm_Object_Item *it)
 {
    Elm_Menu_Item *item = (Elm_Menu_Item *)it;
-   Elm_Object_Item *_item;
 
    ELM_MENU_DATA_GET(WIDGET(item), sd);
 
-   EINA_LIST_FREE(item->submenu.items, _item)
-     elm_object_item_del(_item);
+   elm_menu_item_subitems_clear(it);
    if (item->label) eina_stringshare_del(item->label);
    if (item->content) evas_object_del(item->content);
    if (item->submenu.hv) evas_object_del(item->submenu.hv);
@@ -1114,6 +1112,18 @@ elm_menu_item_subitems_get(const Elm_Object_Item *it)
    return ((Elm_Menu_Item *)it)->submenu.items;
 }
 
+EAPI void
+elm_menu_item_subitems_clear(Elm_Object_Item *it)
+{
+   Elm_Object_Item *sub_it;
+   Eina_List *l, *l_next;
+
+   ELM_MENU_ITEM_CHECK_OR_RETURN(it);
+   EINA_LIST_FOREACH_SAFE(((Elm_Menu_Item *)it)->submenu.items,
+                          l, l_next, sub_it)
+     elm_object_item_del(sub_it);
+}
+
 EAPI const Eina_List *
 elm_menu_items_get(const Evas_Object *obj)
 {
diff --git a/src/lib/elm_menu_common.h b/src/lib/elm_menu_common.h
index c912124..e00793e 100644
--- a/src/lib/elm_menu_common.h
+++ b/src/lib/elm_menu_common.h
@@ -83,6 +83,21 @@ EAPI Eina_Bool                    
elm_menu_item_is_separator(Elm_Object_Item *it
 EAPI const Eina_List             *elm_menu_item_subitems_get(const 
Elm_Object_Item *it);
 
 /**
+ * Remove all sub-items (children) of the given item
+ * @since 1.8
+ *
+ * @param it The item
+ *
+ * This removes all items that are children (and their descendants) of the
+ * given item @p it.
+ *
+ * @see elm_object_item_del()
+ *
+ * @ingroup Menu
+ */
+EAPI void                         elm_menu_item_subitems_clear(Elm_Object_Item 
*it);
+
+/**
  * @brief Get the position of a menu item
  *
  * @param it The menu item

-- 


Reply via email to