From: Ryan Lortie Date: Mon, 8 Apr 2013 19:27:16 +0000 (-0400) Subject: GMenu: add g_menu_remove_all() API X-Git-Tag: 2.37.0~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1de0625103e98710689d65cecfc288e15a5d240d;p=platform%2Fupstream%2Fglib.git GMenu: add g_menu_remove_all() API Removes all of the items from a GMenu. The keyboard indicator wants to do this as part of refreshing the layout list, as an example. https://bugzilla.gnome.org/show_bug.cgi?id=697601 --- diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index ca8cbf2..683b66b 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -3773,6 +3773,7 @@ g_menu_prepend_submenu g_menu_remove +g_menu_remove_all GMenuItem diff --git a/gio/gmenu.c b/gio/gmenu.c index 1fa132f1..940ba66 100644 --- a/gio/gmenu.c +++ b/gio/gmenu.c @@ -486,6 +486,29 @@ g_menu_remove (GMenu *menu, g_menu_model_items_changed (G_MENU_MODEL (menu), position, 1, 0); } +/** + * g_menu_remove_all: + * @menu: a #GMenu + * + * Removes all items in the menu. + * + * Since: 2.38 + **/ +void +g_menu_remove_all (GMenu *menu) +{ + gint i, n; + + g_return_if_fail (G_IS_MENU (menu)); + n = menu->items->len; + + for (i = 0; i < n; i++) + g_menu_clear_item (&g_array_index (menu->items, struct item, i)); + g_array_set_size (menu->items, 0); + + g_menu_model_items_changed (G_MENU_MODEL (menu), 0, n, 0); +} + static void g_menu_finalize (GObject *object) { diff --git a/gio/gmenu.h b/gio/gmenu.h index 729915d..e68cf83 100644 --- a/gio/gmenu.h +++ b/gio/gmenu.h @@ -63,6 +63,9 @@ GLIB_AVAILABLE_IN_2_32 void g_menu_remove (GMenu *menu, gint position); +GLIB_AVAILABLE_IN_2_38 +void g_menu_remove_all (GMenu *menu); + GLIB_AVAILABLE_IN_2_32 void g_menu_insert (GMenu *menu, gint position,