Commit 1de06251 authored by Allison Karlitskaya's avatar Allison Karlitskaya

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
parent 57cd8763
......@@ -3773,6 +3773,7 @@ g_menu_prepend_submenu
<SUBSECTION>
g_menu_remove
g_menu_remove_all
<SUBSECTION>
GMenuItem
......
......@@ -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)
{
......
......@@ -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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment