diff options
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | libdbusmenu-glib/menuitem.c | 49 | ||||
-rw-r--r-- | libdbusmenu-glib/menuitem.h | 2 |
3 files changed, 56 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog index 36f9359..600a3fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libdbusmenu (0.0-0ubuntu1~ppa3) UNRELEASED; urgency=low + + * Bug fix and a couple of convience functions. + + -- Ted Gould <ted@ubuntu.com> Tue, 26 May 2009 23:46:44 +0200 + libdbusmenu (0.0-0ubuntu1~ppa2) jaunty; urgency=low * Bringing in the gtkmenu branch diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c index 91429d6..bc499e0 100644 --- a/libdbusmenu-glib/menuitem.c +++ b/libdbusmenu-glib/menuitem.c @@ -139,7 +139,7 @@ dbusmenu_menuitem_class_init (DbusmenuMenuitemClass *klass) G_STRUCT_OFFSET(DbusmenuMenuitemClass, child_added), NULL, NULL, _dbusmenu_menuitem_marshal_VOID__OBJECT, - G_TYPE_NONE, 2, G_TYPE_OBJECT); + G_TYPE_NONE, 1, G_TYPE_OBJECT); /** DbusmenuMenuitem::child-removed: @arg0: The #DbusmenuMenuitem which was the parent. @@ -403,6 +403,28 @@ dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child) } /** + dbusmenu_menuitem_child_prepend: + @mi: The #DbusmenuMenuitem which will become a new parent + @child: The #DbusmenMenuitem that will be a child + + This function adds @child to the list of children on @mi at + the beginning of that list. + + Return value: Whether the child has been added successfully. +*/ +gboolean +dbusmenu_menuitem_child_prepend (DbusmenuMenuitem * mi, DbusmenuMenuitem * child) +{ + g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE); + g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE); + + DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi); + priv->children = g_list_prepend(priv->children, child); + g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, TRUE); + return TRUE; +} + +/** dbusmenu_menuitem_child_delete: @mi: The #DbusmenuMenuitem which has @child as a child @child: The child #DbusmenuMenuitem that you want to no longer @@ -450,6 +472,31 @@ dbusmenu_menuitem_child_add_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * } /** + dbusmenu_menuitem_child_reorder: + @base: The #DbusmenuMenuitem that has children needing realignment + @child: The #DbusmenuMenuitem that is a child needing to be moved + @position: The position in the list to place it in + + This function moves a child on the list of children. It is + for a child that is already in the list, but simply needs a + new location. + + Return value: Whether the move was successful. +*/ +gboolean +dbusmenu_menuitem_child_reorder(DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position) +{ + g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE); + g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE); + + DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi); + priv->children = g_list_remove(priv->children, child); + priv->children = g_list_insert(priv->children, child, position); + + return TRUE; +} + +/** dbusmenu_menuitem_child_find: @mi: The #DbusmenuMenuitem who's children to look on @id: The ID of the child that we're looking for. diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h index 3f3e97c..c4fcf73 100644 --- a/libdbusmenu-glib/menuitem.h +++ b/libdbusmenu-glib/menuitem.h @@ -107,8 +107,10 @@ GList * dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi) G_GNUC_WARN_UNUS guint dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent); gboolean dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child); +gboolean dbusmenu_menuitem_child_prepend (DbusmenuMenuitem * mi, DbusmenuMenuitem * child); gboolean dbusmenu_menuitem_child_delete (DbusmenuMenuitem * mi, DbusmenuMenuitem * child); gboolean dbusmenu_menuitem_child_add_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position); +gboolean dbusmenu_menuitem_child_reorder (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position); DbusmenuMenuitem * dbusmenu_menuitem_child_find (DbusmenuMenuitem * mi, guint id); DbusmenuMenuitem * dbusmenu_menuitem_find_id (DbusmenuMenuitem * mi, guint id); |