]> granicus.if.org Git - vim/commitdiff
patch 8.1.1550: when a popup has left padding text may be cut off v8.1.1550
authorBram Moolenaar <Bram@vim.org>
Sat, 15 Jun 2019 20:27:23 +0000 (22:27 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 15 Jun 2019 20:27:23 +0000 (22:27 +0200)
Problem:    When a popup has left padding text may be cut off.
Solution:   Add the border and padding when computing the size.

src/popupwin.c
src/testdir/dumps/Test_popupwin_20.dump
src/testdir/dumps/Test_popupwin_21.dump
src/testdir/test_popupwin.vim
src/version.c

index adbc72914938b877cd01510a6663fe725893d9d9..c0b5e1300cea66557758892e8ecbb7d244f8a704 100644 (file)
@@ -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;
            }
index 237b1de8d3519be8cf225e0b3c689837e208bcc6..14487ffb3e564d291abb68cbcdcd9c37210cbd6a 100644 (file)
@@ -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| 
index 836abe4e068a107833d73f8b3ac958a30239b68c..4a32eaa4c01eac73a399e1769e4c9411d1a3e7ac 100644 (file)
@@ -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| 
index f7a319c23f1abae5769b7359bafec18643912c45..ae41512be5b46935b9f68bdc2036cd28905a2493 100644 (file)
@@ -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, {})
index 4d491737b458af4f999ccccc7aa151701f322392..96670c6fb8539141e6c5031be3ea722f8ba53d27 100644 (file)
@@ -777,6 +777,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1550,
 /**/
     1549,
 /**/