diff options
| author | Pietro Gagliardi <[email protected]> | 2014-08-14 07:52:53 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-08-14 07:52:53 -0400 |
| commit | 38772a1a4ab9f9ebf26d6d5726266418ba57f0b7 (patch) | |
| tree | 7de3f98e61fdd2d979b845af3838968e45475309 /redo/container_unix.c | |
| parent | 8d7eb59fc52782aaaedb83c8ee25b6963a627ff6 (diff) | |
Made the custom GTK+ container's forall safer in container_unix.c.
Diffstat (limited to 'redo/container_unix.c')
| -rw-r--r-- | redo/container_unix.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/redo/container_unix.c b/redo/container_unix.c index c7a71dd..10a33c3 100644 --- a/redo/container_unix.c +++ b/redo/container_unix.c @@ -86,10 +86,25 @@ static void goContainer_get_preferred_height(GtkWidget *widget, gint *min, gint } */ +struct forall { + GtkCallback callback; + gpointer data; +}; + +static void doforall(gpointer obj, gpointer data) +{ + struct forall *s = (struct forall *) data; + + (*(s->callback))(GTK_WIDGET(obj), s->data); +} + static void goContainer_forall(GtkContainer *container, gboolean includeInternals, GtkCallback callback, gpointer data) { - /* TODO is this safe? */ - g_ptr_array_foreach(GOCONTAINER(container)->children, callback, data); + struct forall s; + + s.callback = callback; + s.data = data; + g_ptr_array_foreach(GOCONTAINER(container)->children, doforall, &s); } static void goContainer_class_init(goContainerClass *class) |
