[gtk+] Add gtk_list_box_prepend
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add gtk_list_box_prepend
- Date: Wed, 7 Aug 2013 08:53:49 +0000 (UTC)
commit 0b200aaa324075dff3aff2e0a764936b5ed204d9
Author: Paolo Borelli <pborelli gnome org>
Date: Tue Aug 6 14:57:22 2013 +0200
Add gtk_list_box_prepend
Add a convenience method for prepending rows to a list box without
having to fiddle with a sort function.
https://bugzilla.gnome.org/show_bug.cgi?id=705558
docs/reference/gtk/gtk3-sections.txt | 1 +
gtk/gtklistbox.c | 34 ++++++++++++++++++++++++++++++----
gtk/gtklistbox.h | 3 +++
3 files changed, 34 insertions(+), 4 deletions(-)
---
diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt
index 886f4d9..491e1e9 100644
--- a/docs/reference/gtk/gtk3-sections.txt
+++ b/docs/reference/gtk/gtk3-sections.txt
@@ -510,6 +510,7 @@ GtkListBoxSortFunc
GtkListBoxUpdateHeaderFunc
gtk_list_box_new
+gtk_list_box_prepend
gtk_list_box_select_row
gtk_list_box_get_selected_row
diff --git a/gtk/gtklistbox.c b/gtk/gtklistbox.c
index 21fb7c5..8777ffc 100644
--- a/gtk/gtklistbox.c
+++ b/gtk/gtklistbox.c
@@ -1672,10 +1672,10 @@ gtk_list_box_row_visibility_changed (GtkListBox *list_box,
}
static void
-gtk_list_box_real_add (GtkContainer *container,
- GtkWidget *child)
+gtk_list_box_add_row (GtkListBox *list_box,
+ GtkWidget *child,
+ gboolean prepend)
{
- GtkListBox *list_box = GTK_LIST_BOX (container);
GtkListBoxPrivate *priv = gtk_list_box_get_instance_private (list_box);
GtkListBoxRow *row;
GSequenceIter* iter = NULL;
@@ -1692,10 +1692,11 @@ gtk_list_box_real_add (GtkContainer *container,
if (priv->sort_func != NULL)
iter = g_sequence_insert_sorted (priv->children, row,
(GCompareDataFunc)do_sort, list_box);
+ else if (prepend)
+ iter = g_sequence_prepend (priv->children, row);
else
iter = g_sequence_append (priv->children, row);
-
ROW_PRIV (row)->iter = iter;
gtk_widget_set_parent (GTK_WIDGET (row), GTK_WIDGET (list_box));
gtk_widget_set_child_visible (GTK_WIDGET (row), TRUE);
@@ -1712,6 +1713,13 @@ gtk_list_box_real_add (GtkContainer *container,
}
static void
+gtk_list_box_real_add (GtkContainer *container,
+ GtkWidget *child)
+{
+ gtk_list_box_add_row (GTK_LIST_BOX (container), child, FALSE);
+}
+
+static void
gtk_list_box_real_remove (GtkContainer *container,
GtkWidget *child)
{
@@ -2047,6 +2055,24 @@ gtk_list_box_real_size_allocate (GtkWidget *widget,
}
/**
+ * gtk_list_box_prepend:
+ * @list_box: a #GtkListBox.
+ * @child: the #GtkWidget to add
+ *
+ * Prepend a widget to the list. If a sort function is set, the widget will
+ * actually be inserted at the calculated position and this function has the
+ * same effect of gtk_container_add().
+ *
+ * Since: 3.10
+ */
+void
+gtk_list_box_prepend (GtkListBox *list_box,
+ GtkWidget *child)
+{
+ gtk_list_box_add_row (list_box, child, TRUE);
+}
+
+/**
* gtk_list_box_drag_unhighlight_row:
* @list_box: An #GtkListBox.
*
diff --git a/gtk/gtklistbox.h b/gtk/gtklistbox.h
index 161bdb1..d537d7d 100644
--- a/gtk/gtklistbox.h
+++ b/gtk/gtklistbox.h
@@ -161,6 +161,9 @@ void gtk_list_box_row_changed (GtkListBoxRow *row);
GDK_AVAILABLE_IN_3_10
GType gtk_list_box_get_type (void) G_GNUC_CONST;
GDK_AVAILABLE_IN_3_10
+void gtk_list_box_prepend (GtkListBox *list_box,
+ GtkWidget *child);
+GDK_AVAILABLE_IN_3_10
GtkListBoxRow* gtk_list_box_get_selected_row (GtkListBox *list_box);
GDK_AVAILABLE_IN_3_10
GtkListBoxRow* gtk_list_box_get_row_at_index (GtkListBox *list_box,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]