Index: screen.c --- screen.c.orig +++ screen.c @@ -234,11 +234,12 @@ update(int anychanged) /* did any cell really change i = stcol; lcols = 0; col = rescol + frcols; - if (fr && stcol >= fr->or_left->col) + if (fr && stcol >= fr->or_left->col) { if (stcol < fr->ir_left->col) i = fr->or_left->col; else col += flcols; + } for (; (col + fwidth[i] < cols-1 || col_hidden[i] || i < curcol) && i < maxcols; i++) { lcols++; @@ -328,11 +329,12 @@ update(int anychanged) /* did any cell really change i = stcol; lcols = 0; col = rescol + frcols; - if (fr && stcol >= fr->or_left->col) + if (fr && stcol >= fr->or_left->col) { if (stcol < fr->ir_left->col) i = fr->or_left->col; else col += flcols; + } for (; (col + fwidth[i] < cols-1 || col_hidden[i] || i < curcol) && i < maxcols; i++) { lcols++; @@ -377,11 +379,12 @@ update(int anychanged) /* did any cell really change i = strow; rows = 0; row = RESROW + fbrows; - if (fr && strow >= fr->or_left->row) + if (fr && strow >= fr->or_left->row) { if (strow < fr->ir_left->row) i = fr->or_left->row; else row += ftrows; + } for (; (row < lines || row_hidden[i] || i < currow) && i < maxrows; i++) { rows++; @@ -460,11 +463,12 @@ update(int anychanged) /* did any cell really change i = strow; rows = 0; row = RESROW + fbrows; - if (fr && strow >= fr->or_left->row) + if (fr && strow >= fr->or_left->row) { if (strow < fr->ir_left->row) i = fr->or_left->row; else row += ftrows; + } for (; (row < lines || row_hidden[i] || i < currow) && i < maxrows; i++) { rows++; @@ -870,7 +874,7 @@ update(int anychanged) /* did any cell really change } } /* else */ } else - if (!*pp && color && has_colors && cr && cr->r_color != 1) { + if (!*pp && color && has_colors() && cr && cr->r_color != 1) { move(r, c); color_set(cr->r_color, NULL); printw("%*s", fwidth[col], " ");