patch 9.0.0455: a few problems with 'splitscroll'

Problem:    A few problems with 'splitscroll'.
Solution:   Fix 'splitscroll' problems. (Luuk van Baal, closes #11117)
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index a75286f..10cf27d 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1646,6 +1646,7 @@
           for so in [0, 5]
             for ls in range(0, 2)
               for pos in ["H", "M", "L"]
+              tabnew | tabonly! | redraw
               let tabline = (gui ? 0 : (tab ? 1 : 0))
               let winbar_sb = (sb ? winbar : 0)
               execute 'set scrolloff=' . so
@@ -1655,17 +1656,23 @@
               execute tab ? 'tabnew' : ''
               execute winbar ? 'nnoremenu 1.10 WinBar.Test :echo' : ''
               call setline(1, range(1, 256))
-              execute 'norm gg' . pos
-              " No scroll for vertical split and quit
-              vsplit | quit
-              call assert_equal(1, line("w0"))
+              " No scroll for restore_snapshot
+              norm G
+              try
+                copen | close | colder
+              catch /E380/
+              endtry
+              call assert_equal(257 - winheight(0), line("w0"))
 
-              " No scroll for horizontal split
-              split | redraw! | wincmd k
+              " No scroll for firstwin horizontal split
+              execute 'norm gg' . pos
+              split | redraw | wincmd k
               call assert_equal(1, line("w0"))
+              wincmd j
+              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
 
               " No scroll when resizing windows
-              resize +2
+              wincmd k | resize +2
               call assert_equal(1, line("w0"))
               wincmd j
               call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
@@ -1715,7 +1722,7 @@
               call assert_equal(1, line("w0"))
 
               " No scroll in windows split and quit multiple times
-              quit | split | split | quit
+              quit | redraw | split | redraw | split | redraw | quit | redraw
               call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
 
               " No scroll for new buffer
@@ -1740,11 +1747,9 @@
               call assert_equal(6, line("w0"))
               wincmd j
               call assert_equal(5 + win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              only
               endfor
             endfor
           endfor
-          tabonly!
         endfor
       endfor
     endfor