patch 8.1.1001: Visual area not correct when using 'cursorline'

Problem:    Visual area not correct when using 'cursorline'.
Solution:   Update w_last_cursorline also in Visual mode. (Hirohito Higashi,
            closes #4086)
diff --git a/src/screen.c b/src/screen.c
index eabf7c1..111c77d 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3704,14 +3704,16 @@
 #endif
 
 #ifdef FEAT_SYN_HL
-    /* Cursor line highlighting for 'cursorline' in the current window.  Not
-     * when Visual mode is active, because it's not clear what is selected
-     * then. */
-    if (wp->w_p_cul && lnum == wp->w_cursor.lnum
-					 && !(wp == curwin && VIsual_active))
+    // Cursor line highlighting for 'cursorline' in the current window.
+    if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
     {
-	line_attr = HL_ATTR(HLF_CUL);
-	area_highlighting = TRUE;
+	// Do not show the cursor line when Visual mode is active, because it's
+	// not clear what is selected then.  Do update w_last_cursorline.
+	if (!(wp == curwin && VIsual_active))
+	{
+	    line_attr = HL_ATTR(HLF_CUL);
+	    area_highlighting = TRUE;
+	}
 	wp->w_last_cursorline = wp->w_cursor.lnum;
     }
 #endif
diff --git a/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump b/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump
new file mode 100644
index 0000000..b6e20b7
--- /dev/null
+++ b/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump
@@ -0,0 +1,12 @@
+|a+0&#e0e0e08|b|c| | +0&#ffffff0@70
+|a+0&#e0e0e08|b|c| | +0&#ffffff0@70
+|a+0&#e0e0e08|b|c| | +0&#ffffff0@70
+|a+0&#e0e0e08|b|c| | +0&#ffffff0@70
+|a+0&#e0e0e08|b|c| | +0&#ffffff0@70
+>a|b+0&#e0e0e08|c| | +0&#ffffff0@70
+|a|b|c| @71
+|a|b|c| @71
+|a|b|c| @71
+|a|b|c| @71
+|a|b|c| @71
+|-+2&&@1| |V|I|S|U|A|L| |L|I|N|E| |-@1| +0&&@29|1|2| @7|1|2|,|1| @9|1|5|%| 
diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim
index b37684c..e16abf1 100644
--- a/src/testdir/test_highlight.vim
+++ b/src/testdir/test_highlight.vim
@@ -552,3 +552,23 @@
   call StopVimInTerminal(buf)
   call delete('Xtest_cursorline_yank')
 endfunc
+
+func Test_cursorline_with_visualmode()
+  if !CanRunVimInTerminal()
+    return
+  endif
+
+  call writefile([
+	\ 'set cul',
+	\ 'call setline(1, repeat(["abc"], 50))',
+	\ ], 'Xtest_cursorline_with_visualmode')
+  let buf = RunVimInTerminal('-S Xtest_cursorline_with_visualmode', {'rows': 12})
+  call term_wait(buf)
+  call term_sendkeys(buf, "V\<C-f>kkkjk")
+
+  call VerifyScreenDump(buf, 'Test_cursorline_with_visualmode_01', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('Xtest_cursorline_with_visualmode')
+endfunc
diff --git a/src/version.c b/src/version.c
index e4e6b3c..248b841 100644
--- a/src/version.c
+++ b/src/version.c
@@ -780,6 +780,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1001,
+/**/
     1000,
 /**/
     999,