diff --git a/src/files.c b/src/files.c index 0f4a961f25347cbea7b319f3d9a4fbd2f6e21c9e..f38cd984d6fa65cc8d59106252515c91863ebe0d 100644 --- a/src/files.c +++ b/src/files.c @@ -567,8 +567,7 @@ void display_buffer(void) precalc_multicolorinfo(); #endif - /* Update the edit window. */ - edit_refresh(); + refresh_needed = TRUE; } #ifndef DISABLE_MULTIBUFFER diff --git a/src/nano.c b/src/nano.c index a4f43c42d2e451e7a49f6c13044c12938662a672..8944909d8154a7802b25e167f657bee0589e7eb9 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1428,7 +1428,7 @@ void do_toggle(int flag) case LINE_NUMBERS: #endif case SOFTWRAP: - edit_refresh(); + refresh_needed = TRUE; break; } @@ -1733,13 +1733,7 @@ int do_input(bool allow_funcs) if (f && !f->viewok) reset_multis(openfile->current, FALSE); #endif - if (refresh_needed) { -#ifdef DEBUG - fprintf(stderr, "running edit_refresh() as refresh_needed is true\n"); -#endif - edit_refresh(); - refresh_needed = FALSE; - } else if (s->scfunc == do_delete || s->scfunc == do_backspace) + if (!refresh_needed && (s->scfunc == do_delete || s->scfunc == do_backspace)) update_line(openfile->current, openfile->current_x); } } @@ -1956,10 +1950,7 @@ void do_output(char *output, size_t output_len, bool allow_cntrls) reset_multis(openfile->current, FALSE); #endif - if (refresh_needed == TRUE) { - edit_refresh(); - refresh_needed = FALSE; - } else + if (!refresh_needed) update_line(openfile->current, openfile->current_x); } @@ -2718,10 +2709,14 @@ int main(int argc, char **argv) /* Forget any earlier statusbar x position. */ reinit_statusbar_x(); - /* Place the cursor in the edit window and make it visible. */ - reset_cursor(); - curs_set(1); - wnoutrefresh(edit); + /* Refresh either the entire edit window or just the cursor. */ + if (refresh_needed) + edit_refresh(); + else { + reset_cursor(); + curs_set(1); + wnoutrefresh(edit); + } /* Read in and interpret keystrokes. */ do_input(TRUE); diff --git a/src/winio.c b/src/winio.c index 73c367c0be4fda0549182bd5596cc542b6561443..61681f4eda820bb2285cabb26f2bca92dc7ca9c0 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2978,7 +2978,10 @@ void edit_refresh(void) blank_line(edit, nlines, 0, COLS); reset_cursor(); + curs_set(1); wnoutrefresh(edit); + + refresh_needed = FALSE; } /* Move edittop so that current is on the screen. manner says how it