changeset 14095:f452c4aeb837 v8.1.0065

patch 8.1.0065: balloon displayed at the wrong position commit https://github.com/vim/vim/commit/0e6e179f55b85b9e82e74d3f993928d52f0f4d43 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 17 17:10:59 2018 +0200 patch 8.1.0065: balloon displayed at the wrong position Problem: Balloon displayed at the wrong position. Solution: Do not reposition the popup menu at the cursor position.
author Christian Brabandt <cb@256bit.org>
date Sun, 17 Jun 2018 17:15:05 +0200
parents cc99f2e4de00
children 1aa1395acb86
files src/popupmnu.c src/version.c
diffstat 2 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -29,6 +29,7 @@ static int pum_scrollbar;		/* TRUE when 
 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
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    65,
+/**/
     64,
 /**/
     63,