Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
}