blob: b946bcd1a4ac7d2b3ba81971fa1a31c59aa7804d [file] [log] [blame]
Bram Moolenaar1b9645d2017-09-17 23:03:31 +02001" Test WinBar
2
Bram Moolenaarb46fecd2019-06-15 17:58:09 +02003source check.vim
4CheckFeature menu
Bram Moolenaar1b9645d2017-09-17 23:03:31 +02005
Bram Moolenaar8caef442019-05-04 17:30:04 +02006source shared.vim
Bram Moolenaarae0f1512021-03-30 22:12:12 +02007source screendump.vim
Bram Moolenaar8caef442019-05-04 17:30:04 +02008
Bram Moolenaar1b9645d2017-09-17 23:03:31 +02009func Test_add_remove_menu()
10 new
11 amenu 1.10 WinBar.Next :let g:did_next = 11<CR>
12 amenu 1.20 WinBar.Cont :let g:did_cont = 12<CR>
Bram Moolenaar8caef442019-05-04 17:30:04 +020013 redraw
14 call assert_match('Next Cont', Screenline(1))
15
Bram Moolenaar1b9645d2017-09-17 23:03:31 +020016 emenu WinBar.Next
17 call assert_equal(11, g:did_next)
18 emenu WinBar.Cont
19 call assert_equal(12, g:did_cont)
20
21 wincmd w
Bram Moolenaare2e40752020-09-04 21:18:46 +020022 call assert_fails('emenu WinBar.Next', 'E334:')
Bram Moolenaar1b9645d2017-09-17 23:03:31 +020023 wincmd p
24
25 aunmenu WinBar.Next
26 aunmenu WinBar.Cont
27 close
28endfunc
Bram Moolenaar66f83112019-05-04 16:06:12 +020029
Bram Moolenaar711f02d2019-05-05 13:14:28 +020030" Create a WinBar with three buttons.
31" Columns of the button edges:
32" _Next_ _Cont_ _Close_
33" 2 7 10 15 18 24
34func SetupWinbar()
Bram Moolenaar66f83112019-05-04 16:06:12 +020035 amenu 1.10 WinBar.Next :let g:did_next = 11<CR>
36 amenu 1.20 WinBar.Cont :let g:did_cont = 12<CR>
37 amenu 1.30 WinBar.Close :close<CR>
38 redraw
Bram Moolenaar8caef442019-05-04 17:30:04 +020039 call assert_match('Next Cont Close', Screenline(1))
Bram Moolenaar711f02d2019-05-05 13:14:28 +020040endfunc
Bram Moolenaar66f83112019-05-04 16:06:12 +020041
Bram Moolenaar711f02d2019-05-05 13:14:28 +020042func Test_click_in_winbar()
43 new
44 call SetupWinbar()
Bram Moolenaar66f83112019-05-04 16:06:12 +020045 let save_mouse = &mouse
46 set mouse=a
47
Bram Moolenaar66f83112019-05-04 16:06:12 +020048 let g:did_next = 0
49 let g:did_cont = 0
50 for col in [1, 8, 9, 16, 17, 25, 26]
Bram Moolenaar8caef442019-05-04 17:30:04 +020051 call test_setmouse(1, col)
Bram Moolenaar66f83112019-05-04 16:06:12 +020052 call feedkeys("\<LeftMouse>", "xt")
53 call assert_equal(0, g:did_next, 'col ' .. col)
54 call assert_equal(0, g:did_cont, 'col ' .. col)
55 endfor
56
57 for col in range(2, 7)
58 let g:did_next = 0
59 call test_setmouse(1, col)
60 call feedkeys("\<LeftMouse>", "xt")
61 call assert_equal(11, g:did_next, 'col ' .. col)
62 endfor
63
64 for col in range(10, 15)
65 let g:did_cont = 0
66 call test_setmouse(1, col)
67 call feedkeys("\<LeftMouse>", "xt")
68 call assert_equal(12, g:did_cont, 'col ' .. col)
69 endfor
70
71 let wincount = winnr('$')
72 call test_setmouse(1, 20)
73 call feedkeys("\<LeftMouse>", "xt")
74 call assert_equal(wincount - 1, winnr('$'))
75
76 let &mouse = save_mouse
77endfunc
Bram Moolenaar711f02d2019-05-05 13:14:28 +020078
79func Test_click_in_other_winbar()
80 new
81 call SetupWinbar()
82 let save_mouse = &mouse
83 set mouse=a
84 let winid = win_getid()
85
86 split
87 let [row, col] = win_screenpos(winid)
88
89 " Click on Next button in other window
90 let g:did_next = 0
91 call test_setmouse(row, 5)
92 call feedkeys("\<LeftMouse>", "xt")
93 call assert_equal(11, g:did_next)
94
95 " Click on Cont button in other window from Visual mode
96 let g:did_cont = 0
97 call setline(1, 'select XYZ here')
98 call test_setmouse(row, 12)
99 call feedkeys("0fXvfZ\<LeftMouse>x", "xt")
100 call assert_equal(12, g:did_cont)
101 call assert_equal('select here', getline(1))
102
103 " Click on Close button in other window
104 let wincount = winnr('$')
105 let winid = win_getid()
106 call test_setmouse(row, 20)
107 call feedkeys("\<LeftMouse>", "xt")
108 call assert_equal(wincount - 1, winnr('$'))
109 call assert_equal(winid, win_getid())
110
111 bwipe!
112endfunc
Bram Moolenaar98fb65c2019-06-02 20:33:32 +0200113
114func Test_redraw_after_scroll()
115 new
116 amenu 1.10 WinBar.Next :let g:did_next = 11<CR>
117 redraw
118 call assert_equal(" Next", Screenline(1))
119 echo "some\nmore"
120 redraw
121 call assert_equal(" Next", Screenline(1))
122 bwipe!
123endfunc
124
Bram Moolenaarae0f1512021-03-30 22:12:12 +0200125func Test_winbar_not_visible()
126 CheckScreendump
127
128 let lines =<< trim END
129 split
130 nnoremenu WinBar.Test :test
131 set winminheight=0
132 wincmd j
133 wincmd _
134 END
Bram Moolenaardb4c9472022-10-15 22:06:06 +0100135 call writefile(lines, 'XtestWinbarNotVisble', 'D')
Bram Moolenaarae0f1512021-03-30 22:12:12 +0200136 let buf = RunVimInTerminal('-S XtestWinbarNotVisble', #{rows: 10})
137 call VerifyScreenDump(buf, 'Test_winbar_not_visible', {})
138
139 " clean up
140 call StopVimInTerminal(buf)
Bram Moolenaarae0f1512021-03-30 22:12:12 +0200141endfunction
142
Bram Moolenaar49c51b82021-04-01 16:16:18 +0200143func Test_winbar_not_visible_custom_statusline()
144 CheckScreendump
145
146 let lines =<< trim END
147 split
148 nnoremenu WinBar.Test :test
149 set winminheight=0
150 set statusline=abcde
151 wincmd j
152 wincmd _
153 END
Bram Moolenaardb4c9472022-10-15 22:06:06 +0100154 call writefile(lines, 'XtestWinbarNotVisble', 'D')
Bram Moolenaar49c51b82021-04-01 16:16:18 +0200155 let buf = RunVimInTerminal('-S XtestWinbarNotVisble', #{rows: 10})
156 call VerifyScreenDump(buf, 'Test_winbar_not_visible_custom_statusline', {})
157
158 " clean up
159 call StopVimInTerminal(buf)
Bram Moolenaar49c51b82021-04-01 16:16:18 +0200160endfunction
161
zeertzjq6dab00a2022-05-20 13:45:59 +0100162func Test_drag_statusline_with_winbar()
163 call SetupWinbar()
164 let save_mouse = &mouse
165 set mouse=a
166 set laststatus=2
167
168 call test_setmouse(&lines - 1, 1)
169 call feedkeys("\<LeftMouse>", 'xt')
170 call test_setmouse(&lines - 2, 1)
171 call feedkeys("\<LeftDrag>", 'xt')
172 call assert_equal(2, &cmdheight)
173
174 call test_setmouse(&lines - 2, 1)
175 call feedkeys("\<LeftMouse>", 'xt')
176 call test_setmouse(&lines - 3, 1)
177 call feedkeys("\<LeftDrag>", 'xt')
178 call assert_equal(3, &cmdheight)
179
180 call test_setmouse(&lines - 3, 1)
181 call feedkeys("\<LeftMouse>", 'xt')
182 call test_setmouse(&lines - 1, 1)
183 call feedkeys("\<LeftDrag>", 'xt')
184 call assert_equal(1, &cmdheight)
185
186 let &mouse = save_mouse
187 set laststatus&
188endfunc
189
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200190" vim: shiftwidth=2 sts=2 expandtab