static void rsvg_rc_style_merge (GtkRcStyle *dest, GtkRcStyle *src) { if (RSVG_IS_RC_STYLE (src)) { RsvgRcStyle *rsvg_dest = RSVG_RC_STYLE (dest); RsvgRcStyle *rsvg_src = RSVG_RC_STYLE (src); GList *tmp_list1, *tmp_list2; if (rsvg_src->img_list) { /* Copy src image list and append to dest image list */ tmp_list2 = g_list_last (rsvg_dest->img_list); tmp_list1 = rsvg_src->img_list; while (tmp_list1) { if (tmp_list2) { tmp_list2->next = g_list_alloc(); tmp_list2->next->data = tmp_list1->data; tmp_list2->next->prev = tmp_list2; tmp_list2 = tmp_list2->next; } else { rsvg_dest->img_list = g_list_append (NULL, tmp_list1->data); tmp_list2 = rsvg_dest->img_list; } theme_image_ref (tmp_list1->data); tmp_list1 = tmp_list1->next; } } } parent_class->merge (dest, src); }
static void pixbuf_rc_style_merge (GtkRcStyle *dest, GtkRcStyle *src) { if (PIXBUF_IS_RC_STYLE (src)) { PixbufRcStyle *pixbuf_dest = PIXBUF_RC_STYLE (dest); PixbufRcStyle *pixbuf_src = PIXBUF_RC_STYLE (src); GList *tmp_list1, *tmp_list2; if (pixbuf_src->img_list) { /* Copy src image list and append to dest image list */ tmp_list2 = g_list_last (pixbuf_dest->img_list); tmp_list1 = pixbuf_src->img_list; while (tmp_list1) { if (tmp_list2) { tmp_list2->next = g_list_alloc(); tmp_list2->next->data = tmp_list1->data; tmp_list2->next->prev = tmp_list2; tmp_list2 = tmp_list2->next; } else { pixbuf_dest->img_list = g_list_append (NULL, tmp_list1->data); tmp_list2 = pixbuf_dest->img_list; } theme_image_ref (tmp_list1->data); tmp_list1 = tmp_list1->next; } } } parent_class->merge (dest, src); }