[gtk+] cssimage: Fix gradient start/end computation



commit 588ee411ad82b890263d3f56af801681954dfc2c
Author: Benjamin Otte <otte redhat com>
Date:   Sat Oct 6 15:54:10 2012 -0400

    cssimage: Fix gradient start/end computation
    
    This computation is only supposed to happen for repeating gradients, not
    for all of them.

 gtk/gtkcssimagelinear.c |   42 +++++++++++++++++++++++++-----------------
 1 files changed, 25 insertions(+), 17 deletions(-)
---
diff --git a/gtk/gtkcssimagelinear.c b/gtk/gtkcssimagelinear.c
index bd80d5f..b09131d 100644
--- a/gtk/gtkcssimagelinear.c
+++ b/gtk/gtkcssimagelinear.c
@@ -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)
-        continue;
+        *start = 0;
+      else
+        *start = _gtk_css_number_value_get (stop->offset, length) / length;
 
-      pos = _gtk_css_number_value_get (stop->offset, length) / length;
+      *end = *start;
 
-      *end = MAX (pos, *end);
+      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)
+        *end = MAX (*end, 1.0);
+    }
+  else
+    {
+      *start = 0;
+      *end = 1;
     }
-  
-  if (stop->offset == NULL)
-    *end = MAX (*end, 1.0);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]