patch 8.2.4591: cursor line not updated when a callback moves the cursor

Problem:    Cursor line not updated when a callback moves the cursor.
Solution:   Check if the cursor moved. (closes #9970)
diff --git a/src/testdir/dumps/Test_cursorline_callback_1.dump b/src/testdir/dumps/Test_cursorline_callback_1.dump
new file mode 100644
index 0000000..c4f32ea
--- /dev/null
+++ b/src/testdir/dumps/Test_cursorline_callback_1.dump
@@ -0,0 +1,8 @@
+|a+0&#ffffff0@4| @69
+>b+8&&@4| @69
+|c+0&&@4| @69
+|d@4| @69
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|4|,|1| @10|A|l@1| 
diff --git a/src/testdir/test_cursorline.vim b/src/testdir/test_cursorline.vim
index 245048b..2b29007 100644
--- a/src/testdir/test_cursorline.vim
+++ b/src/testdir/test_cursorline.vim
@@ -247,4 +247,30 @@
   call delete('Xtextfile')
 endfunc
 
+func Test_cursorline_callback()
+  CheckScreendump
+  CheckFeature timers
+
+  let lines =<< trim END
+      call setline(1, ['aaaaa', 'bbbbb', 'ccccc', 'ddddd'])
+      set cursorline
+      call cursor(4, 1)
+
+      func Func(timer)
+        call cursor(2, 1)
+      endfunc
+
+      call timer_start(300, 'Func')
+  END
+  call writefile(lines, 'Xcul_timer')
+
+  let buf = RunVimInTerminal('-S Xcul_timer', #{rows: 8})
+  call TermWait(buf, 310)
+  call VerifyScreenDump(buf, 'Test_cursorline_callback_1', {})
+
+  call StopVimInTerminal(buf)
+  call delete('Xcul_timer')
+endfunc
+
+
 " vim: shiftwidth=2 sts=2 expandtab