correctly calculate border frame shape when cutting a window

This commit is contained in:
Mike Blumenkrantz 2013-05-09 14:14:52 +01:00
parent 84b071df66
commit 1b684e8191
1 changed files with 28 additions and 3 deletions

View File

@ -3751,14 +3751,39 @@ _e_comp_shapes_update_comp_win_shape_comp_helper(E_Comp_Win *cw, Eina_Tiler *tb)
/* add the frame */ /* add the frame */
if (cw->bd) if (cw->bd)
{ {
eina_tiler_rect_add(tb, &(Eina_Rectangle){cw->bd->x, cw->bd->y, cw->bd->w, cw->bd->h}); if (cw->bd->client_inset.calc)
SHAPE_INF("ADD: %d,%d@%dx%d", cw->bd->x, cw->bd->y, cw->bd->w, cw->bd->h); {
if (cw->bd->client_inset.t)
{
eina_tiler_rect_add(tb, &(Eina_Rectangle){cw->bd->x, cw->bd->y, cw->bd->w, cw->bd->client_inset.t});
SHAPE_INF("ADD: %d,%d@%dx%d", cw->bd->x, cw->bd->y, cw->bd->w, cw->bd->client_inset.t);
}
if (cw->bd->client_inset.l)
{
eina_tiler_rect_add(tb, &(Eina_Rectangle){cw->bd->x, cw->bd->y, cw->bd->client_inset.l, cw->bd->h});
SHAPE_INF("ADD: %d,%d@%dx%d", cw->bd->x, cw->bd->y, cw->bd->client_inset.l, cw->bd->h);
}
if (cw->bd->client_inset.r)
{
eina_tiler_rect_add(tb, &(Eina_Rectangle){cw->bd->x + cw->bd->client_inset.l + cw->bd->client.w, cw->bd->y, cw->bd->client_inset.r, cw->bd->h});
SHAPE_INF("ADD: %d,%d@%dx%d", cw->bd->x + cw->bd->client_inset.l + cw->bd->client.w, cw->bd->y, cw->bd->client_inset.r, cw->bd->h);
}
if (cw->bd->client_inset.b)
{
eina_tiler_rect_add(tb, &(Eina_Rectangle){cw->bd->x, cw->bd->y + cw->bd->client_inset.t + cw->bd->client.h, cw->bd->w, cw->bd->client_inset.b});
SHAPE_INF("ADD: %d,%d@%dx%d", cw->bd->x, cw->bd->y, cw->bd->w, cw->bd->h);
}
}
} }
for (num = 0, rect = cw->rects; num < cw->rects_num; num++, rect++) for (num = 0, rect = cw->rects; num < cw->rects_num; num++, rect++)
{ {
x = rect->x, y = rect->y, w = rect->width, h = rect->height; x = rect->x, y = rect->y, w = rect->width, h = rect->height;
if (cw->bd) if (cw->bd)
x += cw->bd->x, y += cw->bd->y; {
x += cw->bd->x, y += cw->bd->y;
if (cw->bd->client_inset.calc)
x += cw->bd->client_inset.l, y += cw->bd->client_inset.t;
}
else else
x += cw->x, y += cw->y; x += cw->x, y += cw->y;
E_RECTS_CLIP_TO_RECT(x, y, w, h, cw->c->man->x, cw->c->man->y, cw->c->man->w, cw->c->man->h); E_RECTS_CLIP_TO_RECT(x, y, w, h, cw->c->man->x, cw->c->man->y, cw->c->man->w, cw->c->man->h);