vim-patch:9.0.1493: popup menu position wrong in window with toolbar

Problem:    Popup menu position wrong in window with toolbar.
Solution:   Take the window toolbar into account when positioning the popup
            menu. (closes vim/vim#12308)

4e1ca0d9a6

Fixed in the previous commit. Test only.
This commit is contained in:
zeertzjq 2023-04-28 05:50:08 +08:00
parent fbaa278773
commit aca226d728
2 changed files with 40 additions and 5 deletions

View File

@ -4508,6 +4508,34 @@ describe('builtin popupmenu', function()
{1:~ }| {1:~ }|
pasted | pasted |
]]) ]])
-- Add a window toolbar to the window and check the :popup menu position.
command('setlocal winbar=TEST')
feed('/X<CR>:popup PopUp<CR>')
screen:expect([[
{2:TEST }|
one two three four five |
and one two {7:^X}three four five |
one more tw{n: Undo } |
{1:~ }{n: }{1: }|
{1:~ }{n: Paste }{1: }|
{1:~ }{n: }{1: }|
{1:~ }{n: Select Word }{1: }|
{1:~ }{n: Select Sentence }{1: }|
{1:~ }{n: Select Paragraph }{1: }|
{1:~ }{n: Select Line }{1: }|
{1:~ }{n: Select Block }{1: }|
{1:~ }{n: Select All }{1: }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
:popup PopUp |
]])
feed('<Esc>')
end) end)
describe('"kind" and "menu"', function() describe('"kind" and "menu"', function()

View File

@ -885,14 +885,14 @@ func Test_popup_command_dump()
echomsg 'changed' echomsg 'changed'
endfunc endfunc
END END
call writefile(script, 'XtimerScript') call writefile(script, 'XtimerScript', 'D')
let lines =<< trim END let lines =<< trim END
one two three four five one two three four five
and one two Xthree four five and one two Xthree four five
one more two three four five one more two three four five
END END
call writefile(lines, 'Xtest') call writefile(lines, 'Xtest', 'D')
let buf = RunVimInTerminal('-S XtimerScript Xtest', {}) let buf = RunVimInTerminal('-S XtimerScript Xtest', {})
call term_sendkeys(buf, ":source $VIMRUNTIME/menu.vim\<CR>") call term_sendkeys(buf, ":source $VIMRUNTIME/menu.vim\<CR>")
call term_sendkeys(buf, "/X\<CR>:popup PopUp\<CR>") call term_sendkeys(buf, "/X\<CR>:popup PopUp\<CR>")
@ -910,7 +910,7 @@ func Test_popup_command_dump()
" Set a timer to change a menu entry while it's displayed. The text should " Set a timer to change a menu entry while it's displayed. The text should
" not change but the command does. Making the screendump also verifies that " not change but the command does. Making the screendump also verifies that
" "changed" shows up, which means the timer triggered " "changed" shows up, which means the timer triggered.
call term_sendkeys(buf, "/X\<CR>:call StartTimer() | popup PopUp\<CR>") call term_sendkeys(buf, "/X\<CR>:call StartTimer() | popup PopUp\<CR>")
call VerifyScreenDump(buf, 'Test_popup_command_04', {}) call VerifyScreenDump(buf, 'Test_popup_command_04', {})
@ -918,9 +918,16 @@ func Test_popup_command_dump()
call term_sendkeys(buf, "jj\<CR>") call term_sendkeys(buf, "jj\<CR>")
call VerifyScreenDump(buf, 'Test_popup_command_05', {}) call VerifyScreenDump(buf, 'Test_popup_command_05', {})
call term_sendkeys(buf, "\<Esc>")
" Add a window toolbar to the window and check the :popup menu position.
call term_sendkeys(buf, ":nnoremenu WinBar.TEST :\<CR>")
call term_sendkeys(buf, "/X\<CR>:popup PopUp\<CR>")
call VerifyScreenDump(buf, 'Test_popup_command_06', {})
call term_sendkeys(buf, "\<Esc>")
call StopVimInTerminal(buf) call StopVimInTerminal(buf)
call delete('Xtest')
call delete('XtimerScript')
endfunc endfunc
func Test_popup_complete_backwards() func Test_popup_complete_backwards()