diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-06-15 22:27:23 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-06-15 22:27:23 +0200 |
commit | 51c313104096c7af5024aebbf295f7f03486874b (patch) | |
tree | 0f3b5c85f6bbec42aceff42ceb80ecee48303597 | |
parent | 61eeeea8e6455b1f36905c45a62ea8414f2f1dab (diff) | |
download | vim-git-51c313104096c7af5024aebbf295f7f03486874b.tar.gz |
patch 8.1.1550: when a popup has left padding text may be cut offv8.1.1550
Problem: When a popup has left padding text may be cut off.
Solution: Add the border and padding when computing the size.
-rw-r--r-- | src/popupwin.c | 7 | ||||
-rw-r--r-- | src/testdir/dumps/Test_popupwin_20.dump | 10 | ||||
-rw-r--r-- | src/testdir/dumps/Test_popupwin_21.dump | 10 | ||||
-rw-r--r-- | src/testdir/test_popupwin.vim | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 18 insertions, 13 deletions
diff --git a/src/popupwin.c b/src/popupwin.c index adbc72914..c0b5e1300 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -588,7 +588,7 @@ popup_adjust_position(win_T *wp) // When centering or right aligned, use maximum width. // When left aligned use the space available, but shift to the left when we // hit the right of the screen. - maxwidth = Columns - wp->w_wincol; + maxwidth = Columns - wp->w_wincol - left_extra; if (wp->w_maxwidth > 0 && maxwidth > wp->w_maxwidth) { allow_adjust_left = FALSE; @@ -622,11 +622,12 @@ popup_adjust_position(win_T *wp) || wp->w_popup_pos == POPPOS_BOTLEFT)) { // adjust leftwise to fit text on screen - int shift_by = ( len - maxwidth ); + int shift_by = len - maxwidth; - if ( shift_by > wp->w_wincol ) + if (shift_by > wp->w_wincol) { int truncate_shift = shift_by - wp->w_wincol; + len -= truncate_shift; shift_by -= truncate_shift; } diff --git a/src/testdir/dumps/Test_popupwin_20.dump b/src/testdir/dumps/Test_popupwin_20.dump index 237b1de8d..14487ffb3 100644 --- a/src/testdir/dumps/Test_popupwin_20.dump +++ b/src/testdir/dumps/Test_popupwin_20.dump @@ -5,11 +5,11 @@ |5| @40||+0#0000001#ffd7ff255| @11||| +0#0000000#ffffff0@18 |6| |++0#0000001#ffd7ff255|-@8| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|++0#0000001#ffd7ff255|-@11|+| +0#0000000#ffffff0@18 |7| ||+0#0000001#ffd7ff255|b|o|r|d|e|r| |T|L| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@3|p|a|d@1|i|n|g|s| @2| +0#0000000#ffffff0@37 -|8| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@37 -|9| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@37 -|1|0| @72 -|1@1| @72 -|1|2| @72 +|8| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@16||+0#0000001#ffd7ff255| @2|w|r|a|p@1|e|d| |l|o|n|g|e|r| |t|e +|9+0#0000000#ffffff0| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@16||+0#0000001#ffd7ff255| @2|x|t| @14 +|1+0#0000000#ffffff0|0| @72 +|1@1| @50||+0#0000001#ffd7ff255| @2|r|i|g|h|t| |a|l|i|g|n|e|d| |t|e|x|t +|1+0#0000000#ffffff0|2| @72 |1|3| @72 |1|4| @72 @57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_21.dump b/src/testdir/dumps/Test_popupwin_21.dump index 836abe4e0..4a32eaa4c 100644 --- a/src/testdir/dumps/Test_popupwin_21.dump +++ b/src/testdir/dumps/Test_popupwin_21.dump @@ -5,11 +5,11 @@ |5| @40|║+0#0000001#ffd7ff255| @11|║| +0#0000000#ffffff0@18 |6| |╔+0#0000001#ffd7ff255|═@8| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|╚+0#0000001#ffd7ff255|═@11|╝| +0#0000000#ffffff0@18 |7| |║+0#0000001#ffd7ff255|b|o|r|d|e|r| |T|L| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@3|p|a|d@1|i|n|g|s| @2| +0#0000000#ffffff0@37 -|8| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@37 -|9| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@37 -|1|0| @72 -|1@1| @72 -|1|2| @72 +|8| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@16|║+0#0000001#ffd7ff255| @2|w|r|a|p@1|e|d| |l|o|n|g|e|r| |t|e +|9+0#0000000#ffffff0| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@16|║+0#0000001#ffd7ff255| @2|x|t| @14 +|1+0#0000000#ffffff0|0| @72 +|1@1| @50|║+0#0000001#ffd7ff255| @2|r|i|g|h|t| |a|l|i|g|n|e|d| |t|e|x|t +|1+0#0000000#ffffff0|2| @72 |1|3| @72 |1|4| @72 @57|1|,|1| @10|T|o|p| diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index f7a319c23..ae41512be 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -87,6 +87,8 @@ func Test_popup_with_border_and_padding() \ "call popup_create('hello both', {'line': 2, 'col': 43, 'border': [], 'padding': []})", \ "call popup_create('border TL', {'line': 6, 'col': 3, 'border': [1, 0, 0, 4]})", \ "call popup_create('paddings', {'line': 6, 'col': 23, 'padding': [1, 3, 2, 4]})", + \ "call popup_create('wrapped longer text', {'line': 8, 'col': 55, 'padding': [0, 3, 0, 3], 'border': [0, 1, 0, 1]})", + \ "call popup_create('right aligned text', {'line': 11, 'col': 56, 'wrap': 0, 'padding': [0, 3, 0, 3], 'border': [0, 1, 0, 1]})", \], 'XtestPopupBorder') let buf = RunVimInTerminal('-S XtestPopupBorder', {'rows': 15}) call VerifyScreenDump(buf, 'Test_popupwin_2' .. iter, {}) diff --git a/src/version.c b/src/version.c index 4d491737b..96670c6fb 100644 --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1550, +/**/ 1549, /**/ 1548, |