summaryrefslogtreecommitdiff
path: root/gtk/gtkwidgetpath.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-05-27 17:51:40 +0200
committerBenjamin Otte <otte@redhat.com>2011-06-02 02:03:51 +0200
commit67fe600b2eaf32dce976e75858bece5b46bb5bb9 (patch)
tree147353b5c24389a41543726e370e56f6a94e546a /gtk/gtkwidgetpath.c
parentf0e5b576999844194d647af1eeec2c4e6a663a40 (diff)
downloadgtk+-67fe600b2eaf32dce976e75858bece5b46bb5bb9.tar.gz
widgetpath: Factor out the element copy function
I'll need that function soon.
Diffstat (limited to 'gtk/gtkwidgetpath.c')
-rw-r--r--gtk/gtkwidgetpath.c51
1 files changed, 30 insertions, 21 deletions
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);
}