]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.1.1874: modeless selection in popup window overlaps scrollbar v8.1.1874
authorBram Moolenaar <Bram@vim.org>
Sat, 17 Aug 2019 17:10:53 +0000 (19:10 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 17 Aug 2019 17:10:53 +0000 (19:10 +0200)
Problem:    Modeless selection in popup window overlaps scrollbar.
Solution:   Subtract scrollbar from max_col. (closes #4773)

src/testdir/dumps/Test_popupwin_select_01.dump
src/testdir/test_popupwin.vim
src/ui.c
src/version.c

index 779047de50ab4133bc8d45fe6fbc1164e0065919..b6cedc5a923bdfc15cab1f655519a36c847137fe 100644 (file)
@@ -1,10 +1,10 @@
 >1+0&#ffffff0| @73
 |2| @73
-|3| @7|╔+0#0000001#ffd7ff255|═@17|╗| +0#0000000#ffffff0@45
-|4| @7|║+0#0000001#ffd7ff255|t|h|e| |w+1#0000000#ffffff0|o|r|d| @9|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@45
-|5| @7|║+0#0000001#ffd7ff255|s+1#0000000#ffffff0|o|m|e| |m|o|r|e| @8|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@45
-|6| @7|║+0#0000001#ffd7ff255|s+1#0000000#ffffff0|e|v|e|r|a|l| |w|o|r|d|s| +0#0000001#ffd7ff255|h|e|r|e|║| +0#0000000#ffffff0@45
-|7| @7|╚+0#0000001#ffd7ff255|═@17|╝| +0#0000000#ffffff0@45
+|3| @7|╔+0#0000001#ffd7ff255|═@18|╗| +0#0000000#ffffff0@44
+|4| @7|║+0#0000001#ffd7ff255|t|h|e| |w+1#0000000#ffffff0|o|r|d| @9| +0&#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@44
+|5| @7|║+0#0000001#ffd7ff255|s+1#0000000#ffffff0|o|m|e| |m|o|r|e| @8| +0&#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@44
+|6| @7|║+0#0000001#ffd7ff255|s+1#0000000#ffffff0|e|v|e|r|a|l| |w|o|r|d|s| +0#0000001#ffd7ff255|h|e|r|e| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@44
+|7| @7|╚+0#0000001#ffd7ff255|═@18|╝| +0#0000000#ffffff0@44
 |8| @73
 |9| @73
 |:|c|a|l@1| |S|e|l|e|c|t|1|(|)| @41|1|,|1| @10|T|o|p| 
index 2c055f0501e66388e13e366199d9ec89966c13e1..fbd32be20faba0294f98c5ad000388b57f62af8d 100644 (file)
@@ -506,11 +506,12 @@ func Test_popup_select()
   let lines =<< trim END
     set clipboard=autoselect
     call setline(1, range(1, 20))
-    let winid = popup_create(['the word', 'some more', 'several words here'], #{
+    let winid = popup_create(['the word', 'some more', 'several words here', 'invisible', '5', '6', '7'], #{
          \ drag: 1,
          \ border: [],
          \ line: 3,
          \ col: 10,
+         \ maxheight: 3,
          \ })
     func Select1()
       call feedkeys("\<F3>\<LeftMouse>\<F4>\<LeftDrag>\<LeftRelease>", "xt")
index 153d0203c27602ef4665d4d13ce29997ee5bdf4c..446cefcded8f0f753473acf87c8c026cc3e61c8d 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -1098,7 +1098,8 @@ clip_start_selection(int col, int row, int repeated_click)
        // Click in a popup window restricts selection to that window,
        // excluding the border.
        cb->min_col = wp->w_wincol + wp->w_popup_border[3];
-       cb->max_col = wp->w_wincol + popup_width(wp) - wp->w_popup_border[1];
+       cb->max_col = wp->w_wincol + popup_width(wp)
+                                - wp->w_popup_border[1] - wp->w_has_scrollbar;
        if (cb->max_col > screen_Columns)
            cb->max_col = screen_Columns;
        cb->min_row = wp->w_winrow + wp->w_popup_border[0];
index 081e84ac7051d7e0eb40297581dedf7ba17997ce..875342178c4adbe710e8f0bac7ac6795d8dbb4bb 100644 (file)
@@ -769,6 +769,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1874,
 /**/
     1873,
 /**/