To: vim_dev@googlegroups.com Subject: Patch 8.2.2491 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2491 Problem: Popup window for text property may show in first screen line. Solution: If the text position is invisible do not show the popup window. (closes #7807) Files: src/popupwin.c, src/testdir/test_popupwin.vim, src/testdir/dumps/Test_popup_prop_not_visible_01.dump, src/testdir/dumps/Test_popup_prop_not_visible_02.dump, src/testdir/dumps/Test_popup_prop_not_visible_03.dump *** ../vim-8.2.2490/src/popupwin.c 2021-02-07 12:12:39.377215418 +0100 --- src/popupwin.c 2021-02-10 14:32:56.980807577 +0100 *************** *** 1193,1198 **** --- 1193,1204 ---- textpos2screenpos(prop_win, &pos, &screen_row, &screen_scol, &screen_ccol, &screen_ecol); + if (screen_scol == 0) + { + // position is off screen, make the width zero to hide it. + wp->w_width = 0; + return; + } if (wp->w_popup_pos == POPPOS_TOPLEFT || wp->w_popup_pos == POPPOS_TOPRIGHT) // below the text *** ../vim-8.2.2490/src/testdir/test_popupwin.vim 2021-02-06 14:59:21.126120022 +0100 --- src/testdir/test_popupwin.vim 2021-02-10 14:51:51.642074712 +0100 *************** *** 3836,3839 **** --- 3836,3882 ---- call prop_type_delete('textprop') endfunc + func Test_popup_prop_not_visible() + CheckScreendump + + let lines =<< trim END + vim9script + set nowrap stal=2 + rightbelow :31vnew + setline(1, ['', 'some text', '', 'other text']) + prop_type_add('someprop', {}) + prop_add(2, 9, {type: 'someprop', length: 5}) + popup_create('attached to "some"', { + textprop: 'someprop', + highlight: 'ErrorMsg', + line: -1, + wrap: false, + fixed: true, + }) + prop_type_add('otherprop', {}) + prop_add(4, 10, {type: 'otherprop', length: 5}) + popup_create('attached to "other"', { + textprop: 'otherprop', + highlight: 'ErrorMsg', + line: -1, + wrap: false, + fixed: false, + }) + END + call writefile(lines, 'XtestPropNotVisble') + let buf = RunVimInTerminal('-S XtestPropNotVisble', #{rows: 10}) + call VerifyScreenDump(buf, 'Test_popup_prop_not_visible_01', {}) + + call term_sendkeys(buf, ":vert resize -14\") + call VerifyScreenDump(buf, 'Test_popup_prop_not_visible_02', {}) + + call term_sendkeys(buf, ":vert resize -8\") + call VerifyScreenDump(buf, 'Test_popup_prop_not_visible_03', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('XtestPropNotVisble') + endfunction + + " vim: shiftwidth=2 sts=2 *** ../vim-8.2.2490/src/testdir/dumps/Test_popup_prop_not_visible_01.dump 2021-02-10 14:54:13.353889030 +0100 --- src/testdir/dumps/Test_popup_prop_not_visible_01.dump 2021-02-10 14:52:04.882059034 +0100 *************** *** 0 **** --- 1,10 ---- + | +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 + | +0&&@42||+1&&> +0&&@30 + |~+0#4040ff13&| @41||+1#0000000&|s+0&&|o|m|e| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|s|o|m|e|"| +0#0000000#ffffff0@3 + |~+0#4040ff13&| @41||+1#0000000&| +0&&@30 + |~+0#4040ff13&| @41||+1#0000000&|o+0&&|t|h|e|r| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|o|t|h|e|r|"| +0#0000000#ffffff0@1 + |~+0#4040ff13&| @41||+1#0000000&|~+0#4040ff13&| @29 + |~| @41||+1#0000000&|~+0#4040ff13&| @29 + |~| @41||+1#0000000&|~+0#4040ff13&| @29 + |[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1 + | +0&&@74 *** ../vim-8.2.2490/src/testdir/dumps/Test_popup_prop_not_visible_02.dump 2021-02-10 14:54:13.361889019 +0100 --- src/testdir/dumps/Test_popup_prop_not_visible_02.dump 2021-02-10 14:52:05.934057773 +0100 *************** *** 0 **** --- 1,10 ---- + | +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 + | +0&&@56||+1&&> +0&&@16 + |~+0#4040ff13&| @55||+1#0000000&|s+0&&|o|m|e| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d + |~+0#4040ff13#ffffff0| @55||+1#0000000&| +0&&@16 + |~+0#4040ff13&| @54|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|o|t|h|e|r|" + |~+0#4040ff13#ffffff0| @55||+1#0000000&|~+0#4040ff13&| @15 + |~| @55||+1#0000000&|~+0#4040ff13&| @15 + |~| @55||+1#0000000&|~+0#4040ff13&| @15 + |[+1#0000000&|N|o| |N|a|m|e|]| @29|0|,|0|-|1| @9|A|l@1| |<+3&&|m|e|]| |[|+|]| |1|,|0|-|1| @2 + |:+0&&|v|e|r|t| |r|e|s|i|z|e| |-|1|4| @58 *** ../vim-8.2.2490/src/testdir/dumps/Test_popup_prop_not_visible_03.dump 2021-02-10 14:54:13.365889012 +0100 --- src/testdir/dumps/Test_popup_prop_not_visible_03.dump 2021-02-10 14:52:06.990056505 +0100 *************** *** 0 **** --- 1,10 ---- + | +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 + | +0&&@64||+1&&> +0&&@8 + |~+0#4040ff13&| @63||+1#0000000&|s+0&&|o|m|e| |t|e|x|t + |~+0#4040ff13&| @63||+1#0000000&| +0&&@8 + |~+0#4040ff13&| @63||+1#0000000&|o+0&&|t|h|e|r| |t|e|x + |~+0#4040ff13&| @63||+1#0000000&|~+0#4040ff13&| @7 + |~| @63||+1#0000000&|~+0#4040ff13&| @7 + |~| @63||+1#0000000&|~+0#4040ff13&| @7 + |[+1#0000000&|N|o| |N|a|m|e|]| @37|0|,|0|-|1| @9|A|l@1| |<+3&&|[|+|]| |1|,|0|- + |:+0&&|v|e|r|t| |r|e|s|i|z|e| |-|8| @59 *** ../vim-8.2.2490/src/version.c 2021-02-10 13:18:14.071747031 +0100 --- src/version.c 2021-02-10 14:34:22.168596724 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2491, /**/ -- Vim is like Emacs without all the typing. (John "Johann" Spetz) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///