moving: /do/ redraw the prior line when the viewport hasn't changed
The complementary test on current_y should only be done when doing a scroll-only, because only then the prior line can be offscreen. This fixes https://savannah.gnu.org/bugs/?50658. Reported-by: David Lawrence Ramsey <pooka109@gmail.com>master
parent
9cf980700c
commit
bc876ca729
|
@ -489,11 +489,12 @@ void do_up(bool scroll_only)
|
||||||
1 : editwinrows / 2 + 1);
|
1 : editwinrows / 2 + 1);
|
||||||
|
|
||||||
/* If the lines weren't already redrawn, see if they need to be. */
|
/* If the lines weren't already redrawn, see if they need to be. */
|
||||||
if (openfile->current_y > 0 && openfile->current_y < editwinrows - 1) {
|
if (openfile->current_y > 0) {
|
||||||
/* Redraw the prior line if it's not actually the same line as the
|
/* Redraw the prior line if it's not actually the same line as the
|
||||||
* current one (which it might be in softwrap mode, if we moved just
|
* current one (which it might be in softwrap mode, if we moved just
|
||||||
* one chunk) and the line was horizontally scrolled. */
|
* one chunk) and the line was horizontally scrolled. */
|
||||||
if (openfile->current != was_current
|
if (openfile->current != was_current
|
||||||
|
&& (!scroll_only || openfile->current_y < editwinrows - 1)
|
||||||
&& line_needs_update(was_column, 0))
|
&& line_needs_update(was_column, 0))
|
||||||
update_line(openfile->current->next, 0);
|
update_line(openfile->current->next, 0);
|
||||||
/* Redraw the current line if it needs to be horizontally scrolled. */
|
/* Redraw the current line if it needs to be horizontally scrolled. */
|
||||||
|
@ -545,11 +546,12 @@ void do_down(bool scroll_only)
|
||||||
1 : editwinrows / 2 + 1);
|
1 : editwinrows / 2 + 1);
|
||||||
|
|
||||||
/* If the lines weren't already redrawn, see if they need to be. */
|
/* If the lines weren't already redrawn, see if they need to be. */
|
||||||
if (openfile->current_y > 0 && openfile->current_y < editwinrows - 1) {
|
if (openfile->current_y < editwinrows - 1) {
|
||||||
/* Redraw the prior line if it's not actually the same line as the
|
/* Redraw the prior line if it's not actually the same line as the
|
||||||
* current one (which it might be in softwrap mode, if we moved just
|
* current one (which it might be in softwrap mode, if we moved just
|
||||||
* one chunk) and the line was horizontally scrolled. */
|
* one chunk) and the line was horizontally scrolled. */
|
||||||
if (openfile->current != was_current &&
|
if (openfile->current != was_current &&
|
||||||
|
(!scroll_only || openfile->current_y > 0) &&
|
||||||
line_needs_update(was_column, 0))
|
line_needs_update(was_column, 0))
|
||||||
update_line(openfile->current->prev, 0);
|
update_line(openfile->current->prev, 0);
|
||||||
/* Redraw the current line if it needs to be horizontally scrolled. */
|
/* Redraw the current line if it needs to be horizontally scrolled. */
|
||||||
|
|
Loading…
Reference in New Issue