libframe: fix line wrap display glitch (Erik Quanstrom)
R=rsc http://codereview.appspot.com/3777044
This commit is contained in:
parent
839c052a93
commit
5e90ec75ee
1 changed files with 9 additions and 1 deletions
|
|
@ -9,7 +9,7 @@ frdelete(Frame *f, ulong p0, ulong p1)
|
||||||
{
|
{
|
||||||
Point pt0, pt1, ppt0;
|
Point pt0, pt1, ppt0;
|
||||||
Frbox *b;
|
Frbox *b;
|
||||||
int n0, n1, n;
|
int n0, n1, n, w0;
|
||||||
ulong cn1;
|
ulong cn1;
|
||||||
Rectangle r;
|
Rectangle r;
|
||||||
int nn0;
|
int nn0;
|
||||||
|
|
@ -52,6 +52,7 @@ frdelete(Frame *f, ulong p0, ulong p1)
|
||||||
r.max = pt0;
|
r.max = pt0;
|
||||||
r.max.y += f->font->height;
|
r.max.y += f->font->height;
|
||||||
if(b->nrune > 0){
|
if(b->nrune > 0){
|
||||||
|
w0 = b->wid;
|
||||||
if(n != b->nrune){
|
if(n != b->nrune){
|
||||||
_frsplitbox(f, n1, n);
|
_frsplitbox(f, n1, n);
|
||||||
b = &f->box[n1];
|
b = &f->box[n1];
|
||||||
|
|
@ -59,6 +60,13 @@ frdelete(Frame *f, ulong p0, ulong p1)
|
||||||
r.max.x += b->wid;
|
r.max.x += b->wid;
|
||||||
draw(f->b, r, f->b, nil, pt1);
|
draw(f->b, r, f->b, nil, pt1);
|
||||||
cn1 += b->nrune;
|
cn1 += b->nrune;
|
||||||
|
|
||||||
|
/* blank remainder of line */
|
||||||
|
r.min.x = r.max.x;
|
||||||
|
r.max.x += w0 - b->wid;
|
||||||
|
if(r.max.x > f->r.max.x)
|
||||||
|
r.max.x = f->r.max.x;
|
||||||
|
draw(f->b, r, f->cols[BACK], nil, r.min);
|
||||||
}else{
|
}else{
|
||||||
r.max.x += _frnewwid0(f, pt0, b);
|
r.max.x += _frnewwid0(f, pt0, b);
|
||||||
if(r.max.x > f->r.max.x)
|
if(r.max.x > f->r.max.x)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue