X-Git-Url: http://git.openbox.org/?p=manmower%2Fobtheme.git;a=blobdiff_plain;f=obtheme.c;h=dcafd84225b7993a4a37d705351af3ce6b2bb1a2;hp=56734a015528b99111cf1a2ecf12d708ba986d6f;hb=HEAD;hpb=d95d1aa5a41275a6c793c2faebba2db942931d94 diff --git a/obtheme.c b/obtheme.c index 56734a0..dcafd84 100644 --- 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)