diff options
| author | Quentin Carbonneaux | 2014-08-28 17:32:41 -0400 |
|---|---|---|
| committer | Quentin Carbonneaux | 2014-08-28 17:34:08 -0400 |
| commit | d1e58cb2608044a0146299e0988fc3119ee58197 (patch) | |
| tree | cce0f43834b6e1e9ce705c344159eeceaf6a06ec | |
| parent | 5d0c015aa9c723045e03b32ef8268bae5f4e5860 (diff) | |
stop overloading rev and use a dirty bit
| -rw-r--r-- | main.c | 2 | ||||
| -rw-r--r-- | win.c | 17 | ||||
| -rw-r--r-- | win.h | 3 |
3 files changed, 12 insertions, 10 deletions
@@ -99,7 +99,7 @@ gev(int fd, int flag, void *unused) continue; Setcursor: curwin->cu = pos; - curwin->rev = 0; + curwin->dirty = 1; } return 0; } @@ -170,7 +170,7 @@ win_move(W *w, int x, int y) y = fheight - g->vmargin; if (w == &tag.win) { if (y > w->recty) - tag.owner->rev = 0; + tag.owner->dirty = 1; move(w, w->rectx, y, w->rectw, fheight - y); return; } @@ -241,7 +241,7 @@ win_redraw_frame() } draw(w, GPaleYellow); if (tag.owner == w) - tag.win.rev = 0; + tag.win.dirty = 1; } } if (tag.visible && dirty(&tag.win)) { @@ -327,7 +327,7 @@ win_tag_toggle(W *w) { if (tag.visible) { tag.visible = 0; - tag.owner->rev = 0; + tag.owner->dirty = 1; if (w == &tag.win) return tag.owner; } @@ -335,7 +335,7 @@ win_tag_toggle(W *w) tag.visible = 1; tag.owner = w; move(&tag.win, w->rectx, w->recth - w->recth/TagRatio, w->rectw, w->recth/TagRatio); - w->rev = 0; + w->dirty = 1; return &tag.win; } @@ -369,7 +369,8 @@ win_update(W *w) for (; top<li.len; top++, l++) w->l[l] = li.sl[(li.beg + top) % RingSize]; } - w->rev = 0; + w->rev = eb_revision(w->eb); + w->dirty = 1; } /* static functions */ @@ -377,9 +378,9 @@ win_update(W *w) static int dirty(W *w) { - if (w->rev && w->rev != eb_revision(w->eb)) + if (w->rev != eb_revision(w->eb)) win_update(w); - return !w->rev; + return w->dirty; } /* runewidth - returns the width of a given @@ -485,7 +486,7 @@ draw(W *w, GColor bg) if (cw != 0) g->drawrect(&w->rect, cx, cy, cw, font.height, GXBlack); g->decorate(&w->rect, w->eb->path && w->eb->frev != eb_revision(w->eb), GGray); - w->rev = eb_revision(w->eb); + w->dirty = 0; } /* move - Resize and recompute appearance @@ -30,10 +30,11 @@ enum { struct w { unsigned l[MaxHeight]; /* line start offsets */ int nl; /* current number of lines */ - unsigned rev; /* on-screen revision or 0 if dirty */ + unsigned rev; /* buffer revision used for line offsets */ unsigned cu; /* cursor offset */ EBuf *eb; /* underlying buffer object */ GRect rect; /* rectangle on the screen */ + int dirty; /* force redraw */ }; enum CursorLoc { CTop, CMid, CBot }; |
