changeset 23213:477f1b4c6826 v8.2.2152

patch 8.2.2152: screenpos() does not include the WinBar offset Commit: https://github.com/vim/vim/commit/8dd46e72cfb13b8de793c808ee009c45e881903a Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 17 21:35:29 2020 +0100 patch 8.2.2152: screenpos() does not include the WinBar offset Problem: screenpos() does not include the WinBar offset. Solution: Use W_WINROW() instead of directly using w_window. (closes https://github.com/vim/vim/issues/7487)
author Bram Moolenaar <Bram@vim.org>
date Thu, 17 Dec 2020 21:45:04 +0100
parents c9badf8f1544
children 66b2d1b54e53
files src/move.c src/testdir/test_cursor_func.vim src/version.c
diffstat 3 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/move.c
+++ b/src/move.c
@@ -1247,7 +1247,7 @@ textpos2screenpos(
 	    // character is left or right of the window
 	    row = scol = ccol = ecol = 0;
     }
-    *rowp = wp->w_winrow + row + rowoff;
+    *rowp = W_WINROW(wp) + row + rowoff;
     *scolp = scol + coloff;
     *ccolp = ccol + coloff;
     *ecolp = ecol + coloff;
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -101,6 +101,11 @@ func Test_screenpos()
   close
   call assert_equal({}, screenpos(999, 1, 1))
   bwipe!
+
+  call assert_equal({'col': 1, 'row': 1, 'endcol': 1, 'curscol': 1}, screenpos(win_getid(), 1, 1))
+  nmenu WinBar.TEST :
+  call assert_equal({'col': 1, 'row': 2, 'endcol': 1, 'curscol': 1}, screenpos(win_getid(), 1, 1))
+  nunmenu WinBar.TEST
 endfunc
 
 func Test_screenpos_number()
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2152,
+/**/
     2151,
 /**/
     2150,