mirror of
git://git.sv.gnu.org/nano.git
synced 2024-11-23 13:19:43 +03:00
screen: avoid redrawing a line twice
The old_current line needs to be redrawn only if it differs from current, and if it wasn't drawn already by the iteration for when the mark is on. Also make the conditions involving horizontal scrolling more precise.
This commit is contained in:
parent
aa1ae0a144
commit
4b5b66a806
12
src/winio.c
12
src/winio.c
@ -2983,11 +2983,17 @@ void edit_redraw(filestruct *old_current)
|
||||
}
|
||||
#endif /* !NANO_TINY */
|
||||
|
||||
/* Update old_current and current if we've changed page. */
|
||||
if (need_screen_update(0) || need_screen_update(was_pww)) {
|
||||
/* Update old_current only if it differs from current, and if not
|
||||
* already done above, and if it was horizontally scrolled. */
|
||||
if (old_current != openfile->current && !openfile->mark_set &&
|
||||
get_page_start(was_pww) > 0)
|
||||
update_line(old_current, 0);
|
||||
|
||||
/* Update current if we've changed page, or if it differs from
|
||||
* old_current and needs to be horizontally scrolled. */
|
||||
if (need_screen_update(was_pww) || (old_current != openfile->current &&
|
||||
get_page_start(openfile->placewewant) > 0))
|
||||
update_line(openfile->current, openfile->current_x);
|
||||
}
|
||||
}
|
||||
|
||||
/* Refresh the screen without changing the position of lines. Use this
|
||||
|
Loading…
Reference in New Issue
Block a user