Mercurial > vim
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