9term and acme also use libframe.
- erik
"Russ Cox" <[EMAIL PROTECTED]> writes
|
| > /home/quanstro/cvs/plan9/ /usr/local/plan9/src/libframe/frdraw.c:14,20 -
frdraw.c:14,20
| > for(nb=0,b=f->box; nb<f->nbox; nb++, b++){
| > _frcklinewrap(f, &pt, b);
| > if(!f->noredraw && b->nrune >= 0)
| > - string(f->b, pt, f->cols[TEXT], ZP, f->font, (char
*)b->ptr);
| > + stringbg(f->b, pt, f->cols[TEXT], ZP, f->font, (char
*)b->ptr, display->white, ZP);
| > pt.x += b->wid;
| > }
| > }
|
| who says the background is white?
| frinsert, the only caller of _frredraw in the library,
| does appear to draw the background first, at least
| the beginning of it.
|
| > /home/quanstro/cvs/plan9//src/libframe/frdraw.c:99,105 - frdraw.c:99,105
| > x = f->r.max.x;
| > draw(f->b, Rect(pt.x, pt.y, x, pt.y+f->font->height), back,
nil, pt);
| > if(b->nrune >= 0)
| > - stringn(f->b, pt, text, ZP, f->font, ptr, nr);
| > + stringnbg(f->b, pt, text, ZP, f->font, ptr, nr,
display->white, ZP);
| > pt.x += w;
| > Continue:
| > b++;
|
| this one shouldn't be necessary. the draw call above
| just drew the background, which again might not be white.
|
| the right fix is to edit 9term's wrepaint. it should draw
| the background before calling _frredraw.
|
| it's possible that frinsert needs to be edited a little
| too, to make sure only to _frredraw the part whose
| background it just filled in with frselectpaint.
|
| i leave all this as an exercise to the interested reader.
|
| russ