From 67fe600b2eaf32dce976e75858bece5b46bb5bb9 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 27 May 2011 17:51:40 +0200 Subject: widgetpath: Factor out the element copy function I'll need that function soon. --- gtk/gtkwidgetpath.c | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) (limited to 'gtk/gtkwidgetpath.c') diff --git a/gtk/gtkwidgetpath.c b/gtk/gtkwidgetpath.c index 55085d2fed..de58ca03d9 100644 --- a/gtk/gtkwidgetpath.c +++ b/gtk/gtkwidgetpath.c @@ -123,6 +123,34 @@ gtk_widget_path_new (void) return path; } +static void +gtk_path_element_copy (GtkPathElement *dest, + const GtkPathElement *src) +{ + memset (dest, 0, sizeof (GtkPathElement)); + + dest->type = src->type; + dest->name = src->name; + + if (src->regions) + { + GHashTableIter iter; + gpointer key, value; + + g_hash_table_iter_init (&iter, src->regions); + dest->regions = g_hash_table_new (NULL, NULL); + + while (g_hash_table_iter_next (&iter, &key, &value)) + g_hash_table_insert (dest->regions, key, value); + } + + if (src->classes) + { + dest->classes = g_array_new (FALSE, FALSE, sizeof (GQuark)); + g_array_append_vals (dest->classes, src->classes->data, src->classes->len); + } +} + /** * gtk_widget_path_copy: * @path: a #GtkWidgetPath @@ -145,30 +173,11 @@ gtk_widget_path_copy (const GtkWidgetPath *path) for (i = 0; i < path->elems->len; i++) { - GtkPathElement *elem, new = { 0 }; + GtkPathElement *elem, new; elem = &g_array_index (path->elems, GtkPathElement, i); - new.type = elem->type; - new.name = elem->name; - - if (elem->regions) - { - GHashTableIter iter; - gpointer key, value; - - g_hash_table_iter_init (&iter, elem->regions); - new.regions = g_hash_table_new (NULL, NULL); - - while (g_hash_table_iter_next (&iter, &key, &value)) - g_hash_table_insert (new.regions, key, value); - } - - if (elem->classes) - { - new.classes = g_array_new (FALSE, FALSE, sizeof (GQuark)); - g_array_append_vals (new.classes, elem->classes->data, elem->classes->len); - } + gtk_path_element_copy (&new, elem); g_array_append_val (new_path->elems, new); } -- cgit v1.2.1