]> granicus.if.org Git - vim/commitdiff
patch 8.1.0065: balloon displayed at the wrong position v8.1.0065
authorBram Moolenaar <Bram@vim.org>
Sun, 17 Jun 2018 15:10:59 +0000 (17:10 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 17 Jun 2018 15:10:59 +0000 (17:10 +0200)
Problem:    Balloon displayed at the wrong position.
Solution:   Do not reposition the popup menu at the cursor position.

src/popupmnu.c
src/version.c

index 66fd6b9c5353de9a7c0a79fbf710d7ed718c8edc..52482172556be0fb5217a56ffa789d966d2cfbc3 100644 (file)
@@ -29,6 +29,7 @@ static int pum_scrollbar;             /* TRUE when scrollbar present */
 static int pum_row;                    /* top row of pum */
 static int pum_col;                    /* left column of pum */
 
+static win_T *pum_window = NULL;
 static int pum_win_row;
 static int pum_win_height;
 static int pum_win_col;
@@ -110,6 +111,7 @@ pum_display(
 
        // Remember the essential parts of the window position and size, so we
        // can decide when to reposition the popup menu.
+       pum_window = curwin;
        pum_win_row = curwin->w_wrow + W_WINROW(curwin);
        pum_win_height = curwin->w_height;
        pum_win_col = curwin->w_wincol;
@@ -846,10 +848,11 @@ pum_may_redraw(void)
     if (!pum_visible())
        return;  // nothing to do
 
-    if (pum_win_row == curwin->w_wrow + W_WINROW(curwin)
-           && pum_win_height == curwin->w_height
-           && pum_win_col == curwin->w_wincol
-           && pum_win_width == curwin->w_width)
+    if (pum_window != curwin
+           || (pum_win_row == curwin->w_wrow + W_WINROW(curwin)
+               && pum_win_height == curwin->w_height
+               && pum_win_col == curwin->w_wincol
+               && pum_win_width == curwin->w_width))
     {
        // window position didn't change, redraw in the same position
        pum_redraw();
@@ -912,6 +915,9 @@ pum_position_at_mouse(int min_width)
     pum_width = Columns - pum_col;
     if (pum_width > pum_base_width + 1)
        pum_width = pum_base_width + 1;
+
+    // Do not redraw at cursor position.
+    pum_window = NULL;
 }
 
 # endif
index 8159e480c82daeafaae84af414b67a329798bb96..192b6cd2aa71a1ae9acda94dc0d49948b462700a 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    65,
 /**/
     64,
 /**/