Skip to content

Commit

Permalink
patch 8.1.0058: display problem with margins and scrolling
Browse files Browse the repository at this point in the history
Problem:    Display problem with margins and scrolling.
Solution:   Place the cursor in the right column. (Kouichi Iwamoto,
            closes #3016)
  • Loading branch information
brammool committed Jun 16, 2018
1 parent 6ba3ec1 commit bfa4246
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
26 changes: 17 additions & 9 deletions src/screen.c
Expand Up @@ -9797,6 +9797,7 @@ screen_ins_lines(
int j; int j;
unsigned temp; unsigned temp;
int cursor_row; int cursor_row;
int cursor_col = 0;
int type; int type;
int result_empty; int result_empty;
int can_ce = can_clear(T_CE); int can_ce = can_clear(T_CE);
Expand Down Expand Up @@ -9893,6 +9894,9 @@ screen_ins_lines(
gui_dont_update_cursor(row + off <= gui.cursor_row); gui_dont_update_cursor(row + off <= gui.cursor_row);
#endif #endif


if (wp != NULL && wp->w_wincol != 0 && *T_CSV != NUL && *T_CCS == NUL)
cursor_col = wp->w_wincol;

if (*T_CCS != NUL) /* cursor relative to region */ if (*T_CCS != NUL) /* cursor relative to region */
cursor_row = row; cursor_row = row;
else else
Expand Down Expand Up @@ -9939,7 +9943,7 @@ screen_ins_lines(
} }


screen_stop_highlight(); screen_stop_highlight();
windgoto(cursor_row, 0); windgoto(cursor_row, cursor_col);
if (clear_attr != 0) if (clear_attr != 0)
screen_start_highlight(clear_attr); screen_start_highlight(clear_attr);


Expand All @@ -9958,7 +9962,7 @@ screen_ins_lines(
if (type == USE_T_AL) if (type == USE_T_AL)
{ {
if (i && cursor_row != 0) if (i && cursor_row != 0)
windgoto(cursor_row, 0); windgoto(cursor_row, cursor_col);
out_str(T_AL); out_str(T_AL);
} }
else /* type == USE_T_SR */ else /* type == USE_T_SR */
Expand All @@ -9975,7 +9979,7 @@ screen_ins_lines(
{ {
for (i = 0; i < line_count; ++i) for (i = 0; i < line_count; ++i)
{ {
windgoto(off + i, 0); windgoto(off + i, cursor_col);
out_str(T_CE); out_str(T_CE);
screen_start(); /* don't know where cursor is now */ screen_start(); /* don't know where cursor is now */
} }
Expand Down Expand Up @@ -10011,6 +10015,7 @@ screen_del_lines(
int i; int i;
unsigned temp; unsigned temp;
int cursor_row; int cursor_row;
int cursor_col = 0;
int cursor_end; int cursor_end;
int result_empty; /* result is empty until end of region */ int result_empty; /* result is empty until end of region */
int can_delete; /* deleting line codes can be used */ int can_delete; /* deleting line codes can be used */
Expand Down Expand Up @@ -10110,6 +10115,9 @@ screen_del_lines(
&& gui.cursor_row < end + off); && gui.cursor_row < end + off);
#endif #endif


if (wp != NULL && wp->w_wincol != 0 && *T_CSV != NUL && *T_CCS == NUL)
cursor_col = wp->w_wincol;

if (*T_CCS != NUL) /* cursor relative to region */ if (*T_CCS != NUL) /* cursor relative to region */
{ {
cursor_row = row; cursor_row = row;
Expand Down Expand Up @@ -10172,13 +10180,13 @@ screen_del_lines(
redraw_block(row, end, wp); redraw_block(row, end, wp);
else if (type == USE_T_CD) /* delete the lines */ else if (type == USE_T_CD) /* delete the lines */
{ {
windgoto(cursor_row, 0); windgoto(cursor_row, cursor_col);
out_str(T_CD); out_str(T_CD);
screen_start(); /* don't know where cursor is now */ screen_start(); /* don't know where cursor is now */
} }
else if (type == USE_T_CDL) else if (type == USE_T_CDL)
{ {
windgoto(cursor_row, 0); windgoto(cursor_row, cursor_col);
term_delete_lines(line_count); term_delete_lines(line_count);
screen_start(); /* don't know where cursor is now */ screen_start(); /* don't know where cursor is now */
} }
Expand All @@ -10189,7 +10197,7 @@ screen_del_lines(
*/ */
else if (type == USE_NL) else if (type == USE_NL)
{ {
windgoto(cursor_end - 1, 0); windgoto(cursor_end - 1, cursor_col);
for (i = line_count; --i >= 0; ) for (i = line_count; --i >= 0; )
out_char('\n'); /* cursor will remain on same line */ out_char('\n'); /* cursor will remain on same line */
} }
Expand All @@ -10199,12 +10207,12 @@ screen_del_lines(
{ {
if (type == USE_T_DL) if (type == USE_T_DL)
{ {
windgoto(cursor_row, 0); windgoto(cursor_row, cursor_col);
out_str(T_DL); /* delete a line */ out_str(T_DL); /* delete a line */
} }
else /* type == USE_T_CE */ else /* type == USE_T_CE */
{ {
windgoto(cursor_row + i, 0); windgoto(cursor_row + i, cursor_col);
out_str(T_CE); /* erase a line */ out_str(T_CE); /* erase a line */
} }
screen_start(); /* don't know where cursor is now */ screen_start(); /* don't know where cursor is now */
Expand All @@ -10219,7 +10227,7 @@ screen_del_lines(
{ {
for (i = line_count; i > 0; --i) for (i = line_count; i > 0; --i)
{ {
windgoto(cursor_end - i, 0); windgoto(cursor_end - i, cursor_col);
out_str(T_CE); /* erase a line */ out_str(T_CE); /* erase a line */
screen_start(); /* don't know where cursor is now */ screen_start(); /* don't know where cursor is now */
} }
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -761,6 +761,8 @@ static char *(features[]) =


static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
58,
/**/ /**/
57, 57,
/**/ /**/
Expand Down

0 comments on commit bfa4246

Please sign in to comment.