Esempio n. 1
0
static
void
renderchilds(Page *p)
{
	Rectangle r;
	Kidinfo *k;
	Page *c;
	int i, j, x, y, *w, *h;

	draw(p->b, p->all, display->white, nil, ZP);
	r = p->all;
	y = r.min.y;
	c = p->child;
	k = p->kidinfo;
	frdims(k->rows, k->nrows, Dy(r), &h);
	frdims(k->cols, k->ncols, Dx(r), &w);
	for(i=0; i<k->nrows; i++){
		x = r.min.x;
		for(j=0; j<k->ncols; j++){
			if(c->aborting)
				return;
			c->b = p->b;
			c->all = Rect(x,y,x+w[j],y+h[i]);
			c->w = p->w;
			pagerender(c);
			c = c->next;
			x += w[j];
		}
		y += h[i];
	}
	free(w);
	free(h);
}
Esempio n. 2
0
/* called while row is locked */
void
flushrefresh(void)
{
    Refresh *r, *next;
    Page *p;

    qlock(&refreshlock);
    for(r=refreshs; r!=nil; r=next) {
        p = r->p;
        if(p->changed==TRUE && p->aborting==FALSE) {
            p->changed = FALSE;
            if(p->parent==nil || p->loading==FALSE)
                pagerender(p);
            if(!p->refresh.t)
                pagesetrefresh(p);
        }
        if(p->status) {
            winsetstatus(p->w, p->status);
            free(p->status);
            p->status = nil;
        }
        winseturl(p->w);
        winsettag(p->w);
        decref(p->w);
        next = r->next;
        free(r);
    }
    refreshs = nil;
    qunlock(&refreshlock);
}