repair brokeness provided by a foolish Makefile
[manmower/obtheme.git] / obtheme.c
index 56734a0..dcafd84 100644 (file)
--- a/obtheme.c
+++ b/obtheme.c
@@ -106,13 +106,18 @@ static void decor_render(gpointer data, gpointer user_data)
                g_slist_foreach(decor->children, decor_render, NULL);
 }
 
+struct boundstuff {
+       Rect r;
+       Strut s;
+};
+
 static void decor_bound(gpointer data, gpointer user_data)
 {
-       struct boundrect *br = user_data;
+       struct boundstuff *bs = user_data;
        struct decor *decor = data;
        struct box *box = &decor->geometry.box;
        struct vector *a = &decor->space.anchor;
-       Rect newrect;
+       Rect newrect, temprect;
        double x1, y1, x2, y2;
 
        x1 = expression_eval(&a->x);
@@ -123,38 +128,24 @@ static void decor_bound(gpointer data, gpointer user_data)
        y1 += expression_eval(&box->start.y);
        x2 += expression_eval(&box->end.x);
        y2 += expression_eval(&box->end.y);
-       if (x1 < br->x1)
-               br->x1 = x1;
-       if (x2 < br->x1)
-               br->x1 = x2;
-       if (x1 > br->x2)
-               br->x2 = x1;
-       if (x2 > br->x2)
-               br->x2 = x2;
-
-       if (y1 < br->y1)
-               br->y1 = y1;
-       if (y2 < br->y1)
-               br->y1 = y2;
-       if (y1 > br->y2)
-               br->y2 = y1;
-       if (y2 > br->y2)
-               br->y2 = y2;
+       RECT_SET(temprect, x1, y1, x2-x1, y2-y2);
+       RECT_ADD(newrect, temprect, bs->r);
+       bs->r = newrect;
+
        if (decor->children)
-               g_slist_foreach(decor->children, decor_bound, br);
+               g_slist_foreach(decor->children, decor_bound, bs);
 }
 
-void obtheme_calc_bound(struct theme *thm, char *name, struct boundrect *br)
+void obtheme_calc_bound(struct theme *thm, char *name, Rect *r, Strut *s)
 {
        struct style *sty;
+       struct boundstuff bs;
 
-       br->x1 = 0.0;
-       br->y1 = 0.0;
-       br->x2 = 0.0;
-       br->y2 = 0.0;
+       RECT_SET(bs.r, 0, 0 ,0 ,0);
        sty = g_hash_table_lookup(thm->styles, name);
        assert(sty);
-       g_slist_foreach(sty->tree, decor_bound, br);
+       g_slist_foreach(sty->tree, decor_bound, &bs);
+       *r = bs.r;
 }
 
 void obtheme_decorate_window(struct theme *thm, char *name)