patch 8.1.0187: getwininfo() and win_screenpos() return different numbers

Problem:    getwininfo() and win_screenpos() return different numbers.
Solution:   Add one to "wincol" and "winrow" from getwininfo().
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 9394ece..5759815 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2196,7 +2196,7 @@
 				any	variable {varname} in tab {nr} or {def}
 gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
 				any	{name} in {winnr} in tab page {tabnr}
-getwininfo([{winid}])		List	list of windows
+getwininfo([{winid}])		List	list of info about each window
 getwinpos([{timeout}])		List	X and Y coord in pixels of the Vim window
 getwinposx()			Number	X coord in pixels of the Vim window
 getwinposy()			Number	Y coord in pixels of the Vim window
@@ -4936,6 +4936,41 @@
 			:let list_is_on = gettabwinvar(1, 2, '&list')
 			:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
 <
+getwininfo([{winid}])					*getwininfo()*
+		Returns information about windows as a List with Dictionaries.
+
+		If {winid} is given Information about the window with that ID
+		is returned.  If the window does not exist the result is an
+		empty list.
+
+		Without {winid} information about all the windows in all the
+		tab pages is returned.
+
+		Each List item is a Dictionary with the following entries:
+			bufnr		number of buffer in the window
+			height		window height (excluding winbar)
+			winbar		1 if the window has a toolbar, 0
+					otherwise
+			loclist		1 if showing a location list
+					{only with the +quickfix feature}
+			quickfix	1 if quickfix or location list window
+					{only with the +quickfix feature}
+			terminal	1 if a terminal window
+					{only with the +terminal feature}
+			tabnr		tab page number
+			variables	a reference to the dictionary with
+					window-local variables
+			width		window width
+			wincol		leftmost screen column of the window,
+					col from |win_screenpos()|
+			winid		|window-ID|
+			winnr		window number
+			winrow		topmost screen column of the window,
+					row from |win_screenpos()|
+
+		To obtain all window-local variables use: >
+			gettabwinvar({tabnr}, {winnr}, '&')
+
 getwinpos([{timeout}])					*getwinpos()*
 		The result is a list with two numbers, the result of
 		getwinposx() and getwinposy() combined: 
@@ -4969,39 +5004,6 @@
 		The result will be -1 if the information is not available.
 		The value can be used with `:winpos`.
 
-getwininfo([{winid}])					*getwininfo()*
-		Returns information about windows as a List with Dictionaries.
-
-		If {winid} is given Information about the window with that ID
-		is returned.  If the window does not exist the result is an
-		empty list.
-
-		Without {winid} information about all the windows in all the
-		tab pages is returned.
-
-		Each List item is a Dictionary with the following entries:
-			bufnr		number of buffer in the window
-			height		window height (excluding winbar)
-			winbar		1 if the window has a toolbar, 0
-					otherwise
-			loclist		1 if showing a location list
-					{only with the +quickfix feature}
-			quickfix	1 if quickfix or location list window
-					{only with the +quickfix feature}
-			terminal	1 if a terminal window
-					{only with the +terminal feature}
-			tabnr		tab page number
-			variables	a reference to the dictionary with
-					window-local variables
-			width		window width
-			wincol		leftmost screen column of the window
-			winid		|window-ID|
-			winnr		window number
-			winrow		topmost screen column of the window
-
-		To obtain all window-local variables use: >
-			gettabwinvar({tabnr}, {winnr}, '&')
-
 getwinvar({winnr}, {varname} [, {def}])				*getwinvar()*
 		Like |gettabwinvar()| for the current tabpage.
 		Examples: >
@@ -9049,7 +9051,7 @@
 win_screenpos({nr})					*win_screenpos()*
 		Return the screen position of window {nr} as a list with two
 		numbers: [row, col].  The first window always has position
-		[1, 1].
+		[1, 1], unless there is a tabline, then it is [2, 1].
 		{nr} can be the window number or the |window-ID|.
 		Return [0, 0] if the window cannot be found in the current
 		tabpage.
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 13c60b9..2e06c20 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5648,12 +5648,12 @@
     dict_add_number(dict, "winnr", winnr);
     dict_add_number(dict, "winid", wp->w_id);
     dict_add_number(dict, "height", wp->w_height);
-    dict_add_number(dict, "winrow", wp->w_winrow);
+    dict_add_number(dict, "winrow", wp->w_winrow + 1);
 #ifdef FEAT_MENU
     dict_add_number(dict, "winbar", wp->w_winbar_height);
 #endif
     dict_add_number(dict, "width", wp->w_width);
-    dict_add_number(dict, "wincol", wp->w_wincol);
+    dict_add_number(dict, "wincol", wp->w_wincol + 1);
     dict_add_number(dict, "bufnr", wp->w_buffer->b_fnum);
 
 #ifdef FEAT_TERMINAL
diff --git a/src/testdir/test_bufwintabinfo.vim b/src/testdir/test_bufwintabinfo.vim
index d88b061..0e8c7d1 100644
--- a/src/testdir/test_bufwintabinfo.vim
+++ b/src/testdir/test_bufwintabinfo.vim
@@ -52,21 +52,22 @@
     let winlist = getwininfo()
     call assert_equal(5, len(winlist))
     call assert_equal(winwidth(1), winlist[0].width)
-    call assert_equal(0, winlist[0].wincol)
-    let tablineheight = winlist[0].winrow == 1 ? 1 : 0
-    call assert_equal(tablineheight, winlist[0].winrow)  " tabline adds one
+    call assert_equal(1, winlist[0].wincol)
+    " tabline adds one row in terminal, not in GUI
+    let tablineheight = winlist[0].winrow == 2 ? 1 : 0
+    call assert_equal(tablineheight + 1, winlist[0].winrow)
 
     call assert_equal(winbufnr(2), winlist[1].bufnr)
     call assert_equal(winheight(2), winlist[1].height)
-    call assert_equal(0, winlist[1].wincol)
-    call assert_equal(tablineheight + winheight(1) + 1, winlist[1].winrow)
+    call assert_equal(1, winlist[1].wincol)
+    call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow)
 
     call assert_equal(1, winlist[2].winnr)
-    call assert_equal(tablineheight, winlist[2].winrow)
-    call assert_equal(0, winlist[2].wincol)
+    call assert_equal(tablineheight + 1, winlist[2].winrow)
+    call assert_equal(1, winlist[2].wincol)
 
-    call assert_equal(winlist[2].width + 1, winlist[3].wincol)
-    call assert_equal(0, winlist[4].wincol)
+    call assert_equal(winlist[2].width + 2, winlist[3].wincol)
+    call assert_equal(1, winlist[4].wincol)
 
     call assert_equal(1, winlist[0].tabnr)
     call assert_equal(1, winlist[1].tabnr)
diff --git a/src/version.c b/src/version.c
index 08e39b4..559d8be 100644
--- a/src/version.c
+++ b/src/version.c
@@ -790,6 +790,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    187,
+/**/
     186,
 /**/
     185,