X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftint2;a=blobdiff_plain;f=src%2Futil%2Farea.c;h=ce122a2178d5f31de655c074da6aa6f380d1d0ea;hp=7455561b34e90e5f0862ac476ce794953531ab97;hb=7a03bbf353324d6803aa84ca8fd41e6c6f4d099c;hpb=ac96fe8050ff0f5c4d0cb4b794eeee875e1d4bfd diff --git a/src/util/area.c b/src/util/area.c index 7455561..ce122a2 100644 --- a/src/util/area.c +++ b/src/util/area.c @@ -77,6 +77,16 @@ * ************************************************************/ +void rendering(void *obj) +{ + Panel *panel = (Panel*)obj; + + size_by_content(&panel->area); + size_by_layout(&panel->area, 0, 0); + + refresh(&panel->area); +} + void size_by_content (Area *a) { @@ -94,16 +104,16 @@ void size_by_content (Area *a) if (a->_resize) { if (a->_resize(a)) { - // 'size' changed then 'resize = 1' on the parent + // 'size' changed => 'resize = 1' on the parent and redraw object ((Area*)a->parent)->resize = 1; + a->redraw = 1; } - a->redraw = 1; } } } -void size_by_layout (Area *a) +void size_by_layout (Area *a, int pos, int level) { // don't resize hiden objects if (!a->on_screen) return; @@ -125,8 +135,24 @@ void size_by_layout (Area *a) } } - for (l = a->list; l ; l = l->next) - size_by_layout(l->data); + // update position of childs + pos += a->paddingxlr + a->bg->border.width; + int i=0; + for (l = a->list; l ; l = l->next) { + Area *child = ((Area*)l->data); + i++; + + if (pos != child->posx) { + // pos changed => redraw + child->posx = pos; + child->redraw = 1; + } + //printf("level %d, object %d, pos %d\n", level, i, pos); + + size_by_layout(child, pos, level+1); + + pos += child->width + a->paddingx; + } }