+2008-09-24 Alberto Garcia <agarcia@igalia.com>
+
+ * src/hildon-app-menu.h
+ * src/hildon-app-menu.c
+ (hildon_app_menu_insert, hildon_app_menu_reorder_child)
+ (hildon_app_menu_append, hildon_app_menu_prepend):
+ New methods to prepend, insert and move items in the menu.
+
2008-09-24 Claudio Saavedra <csaavedra@igalia.com>
* src/hildon-wizard-dialog.c:
}
/**
- * hildon_app_menu_append:
+ * hildon_app_menu_insert:
* @menu : A #HildonAppMenu
* @item : A #GtkButton to add to the #HildonAppMenu
+ * @position : The position in the item list where @item is added (from 0 to n-1).
*
- * Adds the @item to @menu.
+ * Adds @item to @menu at the position indicated by @position.
*/
void
-hildon_app_menu_append (HildonAppMenu *menu,
- GtkButton *item)
+hildon_app_menu_insert (HildonAppMenu *menu,
+ GtkButton *item,
+ gint position)
{
HildonAppMenuPrivate *priv;
/* Add the item to the menu */
gtk_widget_show (GTK_WIDGET (item));
- priv->buttons = g_list_append (priv->buttons, item);
+ priv->buttons = g_list_insert (priv->buttons, item, position);
hildon_app_menu_construct_child (menu);
/* Close the menu when the button is clicked */
}
/**
+ * hildon_app_menu_append:
+ * @menu : A #HildonAppMenu
+ * @item : A #GtkButton to add to the #HildonAppMenu
+ *
+ * Adds @item to the end of the menu's item list.
+ */
+void
+hildon_app_menu_append (HildonAppMenu *menu,
+ GtkButton *item)
+{
+ hildon_app_menu_insert (menu, item, -1);
+}
+
+/**
+ * hildon_app_menu_prepend:
+ * @menu : A #HildonAppMenu
+ * @item : A #GtkButton to add to the #HildonAppMenu
+ *
+ * Adds @item to the beginning of the menu's item list.
+ */
+void
+hildon_app_menu_prepend (HildonAppMenu *menu,
+ GtkButton *item)
+{
+ hildon_app_menu_insert (menu, item, 0);
+}
+
+/**
+ * hildon_app_menu_reorder_child:
+ * @menu : A #HildonAppMenu
+ * @item : A #GtkButton to move
+ * @position : The new position to place @item (from 0 to n-1).
+ *
+ * Moves a #GtkButton to a new position within #HildonAppMenu.
+ */
+void
+hildon_app_menu_reorder_child (HildonAppMenu *menu,
+ GtkButton *item,
+ gint position)
+{
+ HildonAppMenuPrivate *priv;
+
+ g_return_if_fail (HILDON_IS_APP_MENU (menu));
+ g_return_if_fail (GTK_IS_BUTTON (item));
+ g_return_if_fail (position >= 0);
+
+ priv = HILDON_APP_MENU_GET_PRIVATE (menu);
+
+ g_return_if_fail (g_list_find (priv->buttons, item));
+
+ /* Move the item */
+ priv->buttons = g_list_remove (priv->buttons, item);
+ priv->buttons = g_list_insert (priv->buttons, item, position);
+
+ hildon_app_menu_construct_child (menu);
+}
+
+/**
* hildon_app_menu_add_filter:
* @menu : A #HildonAppMenu
* @filter : A #GtkButton to add to the #HildonAppMenu.