]> Dogcows Code - chaz/openbox/blobdiff - render/render.c
Make the icon and hilite the proper sizes.
[chaz/openbox] / render / render.c
index 63c1e7245c53b9ef0591122d30dd1fdd3f7ed781..7791429a16510dc54ffcf83f0b4964513caa752a 100644 (file)
@@ -86,8 +86,8 @@ Pixmap RrPaintPixmap(RrAppearance *a, gint w, gint h)
     {
         gint l, t, r, b;
         RrMargins(a, &l, &t, &r, &b);
-        RECT_SET(tarea, l, t, w - l - r, h - t - b); 
-    }       
+        RECT_SET(tarea, l, t, w - l - r, h - t - b);
+    }
 
     for (i = 0; i < a->textures; i++) {
         switch (a->texture[i].type) {
@@ -101,7 +101,7 @@ Pixmap RrPaintPixmap(RrAppearance *a, gint w, gint h)
                     pixel_data_to_pixmap(a, 0, 0, w, h);
             }
             if (a->xftdraw == NULL) {
-                a->xftdraw = XftDrawCreate(RrDisplay(a->inst), a->pixmap, 
+                a->xftdraw = XftDrawCreate(RrDisplay(a->inst), a->pixmap,
                                            RrVisual(a->inst),
                                            RrColormap(a->inst));
             }
@@ -132,10 +132,20 @@ Pixmap RrPaintPixmap(RrAppearance *a, gint w, gint h)
             break;
         case RR_TEXTURE_RGBA:
             g_assert(!transferred);
-            RrImageDraw(a->surface.pixel_data,
-                        &a->texture[i].data.rgba,
-                        a->w, a->h,
-                        &tarea);
+            {
+                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.y += rgb->ty;
+                RrImageDraw(a->surface.pixel_data,
+                            &a->texture[i].data.rgba,
+                            a->w, a->h,
+                            &narea);
+            }
             force_transfer = 1;
         break;
         }
@@ -202,7 +212,7 @@ RrAppearance *RrAppearanceCopy(RrAppearance *orig)
     if (spo->primary != NULL)
         spc->primary = RrColorNew(copy->inst,
                                   spo->primary->r,
-                                  spo->primary->g, 
+                                  spo->primary->g,
                                   spo->primary->b);
     else spc->primary = NULL;
 
@@ -241,6 +251,20 @@ RrAppearance *RrAppearanceCopy(RrAppearance *orig)
                                       spo->bevel_light->b);
     else spc->bevel_light = NULL;
 
+    if (spo->split_primary != NULL)
+        spc->split_primary = RrColorNew(copy->inst,
+                                        spo->split_primary->r,
+                                        spo->split_primary->g,
+                                        spo->split_primary->b);
+    else spc->split_primary = NULL;
+
+    if (spo->split_secondary != NULL)
+        spc->split_secondary = RrColorNew(copy->inst,
+                                        spo->split_secondary->r,
+                                        spo->split_secondary->g,
+                                        spo->split_secondary->b);
+    else spc->split_secondary = NULL;
+
     spc->interlaced = spo->interlaced;
     spc->bevel_light_adjust = spo->bevel_light_adjust;
     spc->bevel_dark_adjust = spo->bevel_dark_adjust;
@@ -284,6 +308,8 @@ void RrAppearanceFree(RrAppearance *a)
         RrColorFree(p->interlace_color);
         RrColorFree(p->bevel_dark);
         RrColorFree(p->bevel_light);
+        RrColorFree(p->split_primary);
+        RrColorFree(p->split_secondary);
         g_free(p->pixel_data);
         p->pixel_data = NULL;
         g_free(a);
@@ -360,7 +386,7 @@ gint RrMinWidth(RrAppearance *a)
             break;
         case RR_TEXTURE_TEXT:
             m = RrFontMeasureString(a->texture[i].data.text.font,
-                                    a->texture[i].data.text.string, 
+                                    a->texture[i].data.text.string,
                                     a->texture[i].data.text.shadow_offset_x,
                                     a->texture[i].data.text.shadow_offset_y);
             w = MAX(w, m->width);
This page took 0.021977 seconds and 4 git commands to generate.