From cdabe7db9148d03dcf7e3584e5be0706b3e5ad1f Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 28 Jun 2013 00:22:00 +0200 Subject: [PATCH] GtkCssImageScaled: Ensure we compute the child when computing the image --- gtk/gtkcssimagescaled.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/gtk/gtkcssimagescaled.c b/gtk/gtkcssimagescaled.c index e0a9f4c904..125e53e7df 100644 --- a/gtk/gtkcssimagescaled.c +++ b/gtk/gtkcssimagescaled.c @@ -103,7 +103,7 @@ gtk_css_image_scaled_compute (GtkCssImage *image, GtkCssImageScaled *copy; int i; - scale = MIN (scale, scaled->n_images); + scale = MAX(MIN (scale, scaled->n_images), 1); if (scaled->scale == scale) return g_object_ref (scaled); @@ -112,9 +112,20 @@ gtk_css_image_scaled_compute (GtkCssImage *image, copy = g_object_new (_gtk_css_image_scaled_get_type (), NULL); copy->scale = scale; copy->n_images = scaled->n_images; - copy->images = g_memdup (scaled->images, sizeof (GtkCssImage *) * scaled->n_images); + copy->images = g_new (GtkCssImage *, scaled->n_images); for (i = 0; i < scaled->n_images; i++) - g_object_ref (copy->images[i]); + { + if (i == scale - 1) + copy->images[i] = _gtk_css_image_compute (scaled->images[i], + property_id, + provider, + scale, + values, + parent_values, + dependencies); + else + copy->images[i] = g_object_ref (scaled->images[i]); + } return GTK_CSS_IMAGE (copy); }