summaryrefslogtreecommitdiff
path: root/redo/container_unix.c
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-14 07:52:53 -0400
committerPietro Gagliardi <[email protected]>2014-08-14 07:52:53 -0400
commit38772a1a4ab9f9ebf26d6d5726266418ba57f0b7 (patch)
tree7de3f98e61fdd2d979b845af3838968e45475309 /redo/container_unix.c
parent8d7eb59fc52782aaaedb83c8ee25b6963a627ff6 (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.c19
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)