begin elment occlusion
This commit is contained in:
parent
82bc7a4d0d
commit
47584032c7
@ -202,7 +202,7 @@ int main(void)
|
|||||||
|
|
||||||
// ug_container_popup(ctx, "Annoying popup", (ug_div_t){.x=SIZE_MM(150), .y=SIZE_MM(150), .w=SIZE_PX(100), .h=SIZE_MM(75.0)});
|
// ug_container_popup(ctx, "Annoying popup", (ug_div_t){.x=SIZE_MM(150), .y=SIZE_MM(150), .w=SIZE_PX(100), .h=SIZE_MM(75.0)});
|
||||||
|
|
||||||
ug_container_body(ctx, "Main Body");
|
//ug_container_body(ctx, "Main Body");
|
||||||
//if (ug_container_body(ctx, "Other Body"))
|
//if (ug_container_body(ctx, "Other Body"))
|
||||||
// printf("No space!\n");
|
// printf("No space!\n");
|
||||||
|
|
||||||
|
15
ugui.c
15
ugui.c
@ -1026,6 +1026,8 @@ int ug_frame_end(ug_ctx_t *ctx)
|
|||||||
draw_elements(ctx, c);
|
draw_elements(ctx, c);
|
||||||
// reset the layout to row
|
// reset the layout to row
|
||||||
c->flags &= ~(CNT_LAYOUT_COLUMN);
|
c->flags &= ~(CNT_LAYOUT_COLUMN);
|
||||||
|
// reset used space
|
||||||
|
c->space = (ug_rect_t){0};
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->input_text[0] = '\0';
|
ctx->input_text[0] = '\0';
|
||||||
@ -1222,7 +1224,18 @@ static int position_element(ug_ctx_t *ctx, ug_container_t *cnt, ug_element_t *el
|
|||||||
rca->x = cx + rect->x;
|
rca->x = cx + rect->x;
|
||||||
rca->y = cy + rect->y;
|
rca->y = cy + rect->y;
|
||||||
|
|
||||||
// printf("rca: x=%d, y=%d, w=%d, h=%d\n", rca->x, rca->y, rca->w, rca->h);
|
// if there is no space for the element
|
||||||
|
if (cnt->space.w + rca->w > cnt->rca.w || cnt->space.h + rca->h > cnt->rca.h)
|
||||||
|
return -1;
|
||||||
|
// or the element was put outside of the container
|
||||||
|
if (rca->x >= cnt->rca.x + cnt->rca.w || rca->y >= cnt->rca.y + cnt->rca.h)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// FIXME: crop element if it is partially outside, this shit introduces
|
||||||
|
// all sorts of resizing bugs
|
||||||
|
if (rca->x < cnt->rca.x + cnt->rca.w && rca->x + rca->w > cnt->rca.x + cnt->rca.w)
|
||||||
|
rca->w = rca->x + rca->w - (cnt->rca.x + cnt->rca.w);
|
||||||
|
|
||||||
|
|
||||||
if (TEST(cnt->flags, CNT_LAYOUT_COLUMN)) {
|
if (TEST(cnt->flags, CNT_LAYOUT_COLUMN)) {
|
||||||
cnt->c_orig.y += rca->h + m;
|
cnt->c_orig.y += rca->h + m;
|
||||||
|
Loading…
Reference in New Issue
Block a user