diff options
Diffstat (limited to 'e-util/e-gui-utils.c')
-rw-r--r-- | e-util/e-gui-utils.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/e-util/e-gui-utils.c b/e-util/e-gui-utils.c index f7e2d946c6..5d53c64d35 100644 --- a/e-util/e-gui-utils.c +++ b/e-util/e-gui-utils.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * GUI utility functions * @@ -110,3 +111,28 @@ GtkWidget *e_create_image_widget(gchar *name, return NULL; } +typedef struct { + GtkCallback callback; + gpointer closure; +} CallbackClosure; + +static void +e_container_foreach_leaf_callback(GtkWidget *widget, CallbackClosure *callback_closure) +{ + if (GTK_IS_CONTAINER(widget)) { + e_container_foreach_leaf(GTK_CONTAINER(widget), callback_closure->callback, callback_closure->closure); + } else { + (*callback_closure->callback) (widget, callback_closure->closure); + } +} + +void +e_container_foreach_leaf(GtkContainer *container, + GtkCallback callback, + gpointer closure) +{ + CallbackClosure callback_closure; + callback_closure.callback = callback; + callback_closure.closure = closure; + gtk_container_foreach(container, (GtkCallback) e_container_foreach_leaf_callback, &callback_closure); +} |