patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Problem: A finished terminal in a popup window does not show a scrollbar.
Solution: Show the scrollbar if the terminal job is finished. (closes
#10497)
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index f58b159..178f235 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2856,7 +2856,7 @@
call assert_fails('call popup_create(termbuf2, #{})', 'E861:')
call term_sendkeys(termbuf2, "exit\<CR>")
- " Exiting shell closes popup window
+ " Exiting shell puts popup window in Terminal-Normal mode.
call feedkeys("exit\<CR>", 'xt')
" Wait for shell to exit
call WaitForAssert({-> assert_equal("dead", job_status(term_getjob(termbuf)))})
@@ -2866,6 +2866,42 @@
call assert_equal(origwin, win_getid())
endfunc
+func Test_popupwin_terminal_scrollbar()
+ CheckFeature terminal
+ CheckScreendump
+ CheckUnix
+
+ call writefile(range(50), 'Xtestfile')
+ let lines =<< trim END
+ vim9script
+
+ term_start(['cat', 'Xtestfile'], {hidden: true})
+ ->popup_create({
+ minwidth: 40,
+ maxwidth: 40,
+ minheight: 8,
+ maxheight: 8,
+ scrollbar: true,
+ border: []
+ })
+ END
+ call writefile(lines, 'Xpterm')
+ let buf = RunVimInTerminal('-S Xpterm', #{rows: 15})
+ call VerifyScreenDump(buf, 'Test_popupwin_poptermscroll_1', {})
+
+ " scroll to the middle
+ call term_sendkeys(buf, "50%")
+ call VerifyScreenDump(buf, 'Test_popupwin_poptermscroll_2', {})
+
+ " close the popupwin.
+ call term_sendkeys(buf, ":q\<CR>")
+ call VerifyScreenDump(buf, 'Test_popupwin_poptermscroll_3', {})
+
+ call StopVimInTerminal(buf)
+ call delete('Xtestfile')
+ call delete('Xpterm')
+endfunc
+
func Test_popupwin_close_prevwin()
CheckFeature terminal
call Popupwin_close_prevwin()