fix min-size calculations for lineart textures
authorDana Jansens <danakj@orodu.net>
Thu, 14 Feb 2008 17:31:51 +0000 (12:31 -0500)
committerMikael Magnusson <mikachu@comhem.se>
Thu, 14 Feb 2008 18:43:08 +0000 (19:43 +0100)
render/render.c

index 304148d..fd442d2 100644 (file)
@@ -394,6 +394,8 @@ gint RrMinWidth(RrAppearance *a)
     gint l, t, r, b;
     gint w = 0;
 
+    RrMargins(a, &l, &t, &r, &b);
+
     for (i = 0; i < a->textures; ++i) {
         switch (a->texture[i].type) {
         case RR_TEXTURE_NONE:
@@ -418,14 +420,12 @@ gint RrMinWidth(RrAppearance *a)
             /* images resize so they don't contribute anything to the min */
             break;
         case RR_TEXTURE_LINE_ART:
-            w += MAX(w, MAX(a->texture[i].data.lineart.x1,
-                            a->texture[i].data.lineart.x2));
+            w = MAX(w, MAX(a->texture[i].data.lineart.x1 - l - r,
+                           a->texture[i].data.lineart.x2 - l - r));
             break;
         }
     }
 
-    RrMargins(a, &l, &t, &r, &b);
-
     w += l + r;
 
     if (w < 1) w = 1;
@@ -439,6 +439,8 @@ gint RrMinHeight(RrAppearance *a)
     RrSize *m;
     gint h = 0;
 
+    RrMargins(a, &l, &t, &r, &b);
+
     for (i = 0; i < a->textures; ++i) {
         switch (a->texture[i].type) {
         case RR_TEXTURE_NONE:
@@ -473,14 +475,12 @@ gint RrMinHeight(RrAppearance *a)
             /* images resize so they don't contribute anything to the min */
             break;
         case RR_TEXTURE_LINE_ART:
-            h += MAX(h, MAX(a->texture[i].data.lineart.y1,
-                            a->texture[i].data.lineart.y2));
+            h = MAX(h, MAX(a->texture[i].data.lineart.y1 - t - b,
+                           a->texture[i].data.lineart.y2 - t - b));
             break;
         }
     }
 
-    RrMargins(a, &l, &t, &r, &b);
-
     h += t + b;
 
     if (h < 1) h = 1;