forked from aniani/vim
patch 8.2.4204: screenpos() has non-zero row for invisible text
Problem: screenpos() has non-zero row for invisible text. Solution: Only add the window row when the text is visible. (closes #9618)
This commit is contained in:
@@ -1262,12 +1262,15 @@ textpos2screenpos(
|
||||
if (col >= wp->w_width)
|
||||
col = -1;
|
||||
if (col >= 0 && row + rowoff <= wp->w_height)
|
||||
{
|
||||
coloff = col - scol + wp->w_wincol + 1;
|
||||
row += W_WINROW(wp);
|
||||
}
|
||||
else
|
||||
// character is left, right or below of the window
|
||||
row = rowoff = scol = ccol = ecol = 0;
|
||||
}
|
||||
*rowp = W_WINROW(wp) + row + rowoff;
|
||||
*rowp = row + rowoff;
|
||||
*scolp = scol + coloff;
|
||||
*ccolp = ccol + coloff;
|
||||
*ecolp = ecol + coloff;
|
||||
|
||||
@@ -124,7 +124,7 @@ func Test_screenpos()
|
||||
\ 'col': wincol + 7,
|
||||
\ 'curscol': wincol + 7,
|
||||
\ 'endcol': wincol + 7}, winid->screenpos(line('$'), 8))
|
||||
call assert_equal({'row': winrow - 1, 'col': 0, 'curscol': 0, 'endcol': 0},
|
||||
call assert_equal({'row': 0, 'col': 0, 'curscol': 0, 'endcol': 0},
|
||||
\ winid->screenpos(line('$'), 22))
|
||||
|
||||
close
|
||||
|
||||
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4204,
|
||||
/**/
|
||||
4203,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user