cssimage: Fix gradient start/end computation

This computation is only supposed to happen for repeating gradients, not
for all of them.
This commit is contained in:
Benjamin Otte 2012-10-06 15:54:10 -04:00
parent b454fc50ed
commit 588ee411ad

View File

@ -40,28 +40,36 @@ gtk_css_image_linear_get_start_end (GtkCssImageLinear *linear,
double pos;
guint i;
stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, 0);
if (stop->offset == NULL)
*start = 0;
else
*start = _gtk_css_number_value_get (stop->offset, length) / length;
*end = *start;
for (i = 0; i < linear->stops->len; i++)
if (linear->repeating)
{
stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, i);
stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, 0);
if (stop->offset == NULL)
*start = 0;
else
*start = _gtk_css_number_value_get (stop->offset, length) / length;
*end = *start;
for (i = 0; i < linear->stops->len; i++)
{
stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, i);
if (stop->offset == NULL)
continue;
pos = _gtk_css_number_value_get (stop->offset, length) / length;
*end = MAX (pos, *end);
}
if (stop->offset == NULL)
continue;
pos = _gtk_css_number_value_get (stop->offset, length) / length;
*end = MAX (pos, *end);
*end = MAX (*end, 1.0);
}
else
{
*start = 0;
*end = 1;
}
if (stop->offset == NULL)
*end = MAX (*end, 1.0);
}
static void