]> Dogcows Code - chaz/openbox/blobdiff - render/render.c
Merge branch 'backport' into work
[chaz/openbox] / render / render.c
index 304148dec8054af7f7b1f34dff6e8a2838f393fc..20002e32773c3a25b19267724ff47372da64f33f 100644 (file)
@@ -135,12 +135,14 @@ Pixmap RrPaintPixmap(RrAppearance *a, gint w, gint h)
             {
                 RrRect narea = tarea;
                 RrTextureImage *img = &a->texture[i].data.image;
-                if (img->twidth)
-                    narea.width = MIN(tarea.width, img->twidth);
-                if (img->theight)
-                    narea.height = MIN(tarea.height, img->theight);
                 narea.x += img->tx;
+                narea.width -= img->tx;
                 narea.y += img->ty;
+                narea.height -= img->ty;
+                if (img->twidth)
+                    narea.width = MIN(narea.width, img->twidth);
+                if (img->theight)
+                    narea.height = MIN(narea.height, img->theight);
                 RrImageDrawImage(a->surface.pixel_data,
                                  &a->texture[i].data.image,
                                  a->w, a->h,
@@ -153,12 +155,14 @@ Pixmap RrPaintPixmap(RrAppearance *a, gint w, gint h)
             {
                 RrRect narea = tarea;
                 RrTextureRGBA *rgb = &a->texture[i].data.rgba;
-                if (rgb->twidth)
-                    narea.width = MIN(tarea.width, rgb->twidth);
-                if (rgb->theight)
-                    narea.height = MIN(tarea.height, rgb->theight);
                 narea.x += rgb->tx;
+                narea.width -= rgb->tx;
                 narea.y += rgb->ty;
+                narea.height -= rgb->ty;
+                if (rgb->twidth)
+                    narea.width = MIN(narea.width, rgb->twidth);
+                if (rgb->theight)
+                    narea.height = MIN(narea.height, rgb->theight);
                 RrImageDrawRGBA(a->surface.pixel_data,
                                 &a->texture[i].data.rgba,
                                 a->w, a->h,
@@ -333,7 +337,6 @@ void RrAppearanceFree(RrAppearance *a)
     }
 }
 
-
 static void pixel_data_to_pixmap(RrAppearance *l,
                                  gint x, gint y, gint w, gint h)
 {
@@ -394,6 +397,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 +423,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 +442,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 +478,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;
This page took 0.022951 seconds and 4 git commands to generate.