do not draw a row, scrollbar or statusbar if its completely outside the window - sfeed_curses - sfeed curses UI (now part of sfeed, development is in sfeed)
(HTM) git clone git://git.codemadness.org/sfeed_curses
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit e8baa8ef0f426922b49a941a18fa26f7b6bcc37e
(DIR) parent 3bc8fcc8b261f1b73d8b24d7a3f5cd8e2654ab78
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 31 Mar 2021 18:13:01 +0200
do not draw a row, scrollbar or statusbar if its completely outside the window
The drawing of the row outside is reproducable if only 2 "dirty" rows are
redrawn.
Diffstat:
M sfeed_curses.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/sfeed_curses.c b/sfeed_curses.c
@@ -799,7 +799,8 @@ pane_row_draw(struct pane *p, off_t pos, int selected)
{
struct row *row;
- if (p->hidden || !p->width || !p->height)
+ if (p->hidden || !p->width || !p->height ||
+ p->x >= win.width || p->y + (pos % p->height) >= win.height)
return;
row = pane_row_get(p, pos);
@@ -1024,7 +1025,7 @@ scrollbar_draw(struct scrollbar *s)
if (!s->dirty)
return;
s->dirty = 0;
- if (s->hidden || !s->size)
+ if (s->hidden || !s->size || s->x >= win.width || s->y >= win.height)
return;
cursorsave();
@@ -1188,7 +1189,7 @@ statusbar_draw(struct statusbar *s)
if (!s->dirty)
return;
s->dirty = 0;
- if (s->hidden || !s->width)
+ if (s->hidden || !s->width || s->x >= win.width || s->y >= win.height)
return;
cursorsave();