+ // 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;
+ }
+}
+
+
+void refresh (Area *a)
+{
+ // don't draw and resize hide objects
+ if (!a->on_screen) return;
+
+ // don't draw transparent objects (without foreground and without background)
+ if (a->redraw) {
+ a->redraw = 0;
+ // force redraw of child
+ GSList *l;
+ for (l = a->list ; l ; l = l->next)
+ ((Area*)l->data)->redraw = 1;
+// set_redraw(l->data);
+
+ //printf("draw area posx %d, width %d\n", a->posx, a->width);
+ draw(a);
+ }
+
+ // draw current Area
+ if (a->pix == 0) printf("empty area posx %d, width %d\n", a->posx, a->width);
+ XCopyArea (server.dsp, a->pix, ((Panel *)a->panel)->temp_pmap, server.gc, 0, 0, a->width, a->height, a->posx, a->posy);
+
+ // and then refresh child object
+ GSList *l;