summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2017-08-22 14:15:28 -0400
committerMatthias Clasen <mclasen@redhat.com>2017-08-22 14:18:15 -0400
commitb76b7e5cac1d2208a7bc96c392e882879fd91540 (patch)
treef39ba454650b1227f247b67736e424d916d3eaee
parent7937da632ad0f1c4891f0d4e15ae8da27df47837 (diff)
downloadgtk+-wip/matthiasc/n-children.tar.gz
Add a getter for the number of childrenwip/matthiasc/n-children
Having this api will let us optimize things later. For now, just iterate over the children.
-rw-r--r--docs/reference/gtk/gtk4-sections.txt1
-rw-r--r--gtk/gtkwidget.c22
-rw-r--r--gtk/gtkwidget.h2
3 files changed, 25 insertions, 0 deletions
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index d84ddf5bff..325226dd13 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -4631,6 +4631,7 @@ gtk_widget_get_next_sibling
gtk_widget_get_prev_sibling
gtk_widget_get_first_child
gtk_widget_get_last_child
+gtk_widget_get_n_children
gtk_widget_insert_before
gtk_widget_insert_after
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index dbfaa8cb12..02f4145835 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -15307,6 +15307,28 @@ gtk_widget_get_last_child (GtkWidget *widget)
}
/**
+ * gtk_widget_get_n_children:
+ * @widget: a #GtkWidget
+ *
+ * Returns: the number of children
+ *
+ * Since: 3.92
+ */
+guint
+gtk_widget_get_n_children (GtkWidget *widget)
+{
+ guint n = 0;
+ GtkWidget *child;
+
+ for (child = gtk_widget_get_first_child (widget);
+ child != NULL;
+ child = gtk-widget_get_next_sibling (child))
+ n++;
+
+ return n;
+}
+
+/**
* gtk_widget_get_next_sibling:
* @widget: a #GtkWidget
*
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index ff2aa771ba..89e51cf6bd 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -1170,6 +1170,8 @@ GDK_AVAILABLE_IN_3_90
GtkWidget * gtk_widget_get_first_child (GtkWidget *widget);
GDK_AVAILABLE_IN_3_90
GtkWidget * gtk_widget_get_last_child (GtkWidget *widget);
+GDK_AVAILABLE_IN_3_92
+guint gtk_widget_get_n_children (GtkWidget *widget);
GDK_AVAILABLE_IN_3_90
GtkWidget * gtk_widget_get_next_sibling (GtkWidget *widget);
GDK_AVAILABLE_IN_3_90