Patch 8.1.1884
Problem: Cannot use mouse scroll wheel in popup in Insert mode. Mouse
clicks in popup close the popup menu.
Solution: Check if the mouse is in a popup window. Do not let mouse events
close the popup menu. (closes #4544)
Files: src/edit.c, src/popupmnu.c, src/insexpand.c
*** ../vim-8.1.1883/src/edit.c 2019-06-12 20:21:57.737817533 +0200
--- src/edit.c 2019-08-18 17:15:45.826882712 +0200
***************
*** 5267,5273 ****
col = mouse_col;
/* find the window at the pointer coordinates */
! wp = mouse_find_win(&row, &col, FAIL_POPUP);
if (wp == NULL)
return;
curwin = wp;
--- 5267,5273 ----
col = mouse_col;
/* find the window at the pointer coordinates */
! wp = mouse_find_win(&row, &col, FIND_POPUP);
if (wp == NULL)
return;
curwin = wp;
***************
*** 5288,5293 ****
--- 5288,5297 ----
(long)(curwin->w_botline - curwin->w_topline));
else
scroll_redraw(dir, 3L);
+ # ifdef FEAT_TEXT_PROP
+ if (WIN_IS_POPUP(curwin))
+ popup_set_firstline(curwin);
+ # endif
}
#ifdef FEAT_GUI
else
*** ../vim-8.1.1883/src/popupmnu.c 2019-08-18 15:24:23.197608923 +0200
--- src/popupmnu.c 2019-08-18 19:20:55.466507293 +0200
***************
*** 638,643 ****
--- 638,644 ----
{
int resized = FALSE;
int context = pum_height / 2;
+ int prev_selected = pum_selected;
#ifdef FEAT_TEXT_PROP
int has_info = FALSE;
#endif
***************
*** 826,832 ****
curbuf->b_changed = 0;
curbuf->b_p_ma = FALSE;
! curwin->w_cursor.lnum = 1;
curwin->w_cursor.col = 0;
if (use_popup && win_valid(curwin_save))
redraw_win_later(curwin_save, SOME_VALID);
--- 827,842 ----
curbuf->b_changed = 0;
curbuf->b_p_ma = FALSE;
! if (pum_selected != prev_selected)
! {
! # ifdef FEAT_TEXT_PROP
! curwin->w_firstline = 1;
! # endif
! curwin->w_topline = 1;
! }
! else if (curwin->w_topline > curbuf->b_ml.ml_line_count)
! curwin->w_topline = curbuf->b_ml.ml_line_count;
! curwin->w_cursor.lnum = curwin->w_topline;
curwin->w_cursor.col = 0;
if (use_popup && win_valid(curwin_save))
redraw_win_later(curwin_save, SOME_VALID);
*** ../vim-8.1.1883/src/insexpand.c 2019-08-15 21:30:26.622085162 +0200
--- src/insexpand.c 2019-08-18 18:42:07.215280901 +0200
***************
*** 1943,1948 ****
--- 1943,1978 ----
|| c == K_MOUSELEFT || c == K_MOUSERIGHT)
return retval;
+ #ifdef FEAT_TEXT_PROP
+ // Ignore mouse events in a popup window
+ if (is_mouse_key(c))
+ {
+ // Ignore drag and release events, the position does not need to be in
+ // the popup and it may have just closed.
+ if (c == K_LEFTRELEASE
+ || c == K_LEFTRELEASE_NM
+ || c == K_MIDDLERELEASE
+ || c == K_RIGHTRELEASE
+ || c == K_X1RELEASE
+ || c == K_X2RELEASE
+ || c == K_LEFTDRAG
+ || c == K_MIDDLEDRAG
+ || c == K_RIGHTDRAG
+ || c == K_X1DRAG
+ || c == K_X2DRAG)
+ return retval;
+ if (popup_visible)
+ {
+ int row = mouse_row;
+ int col = mouse_col;
+ win_T *wp = mouse_find_win(&row, &col, FIND_POPUP);
+
+ if (wp != NULL && WIN_IS_POPUP(wp))
+ return retval;
+ }
+ }
+ #endif
+
// Set "compl_get_longest" when finding the first matches.
if (ctrl_x_mode == CTRL_X_NOT_DEFINED_YET
|| (ctrl_x_mode == CTRL_X_NORMAL && !compl_started))
*** ../vim-8.1.1883/src/version.c 2019-08-18 17:58:08.389767777 +0200
--- src/version.c 2019-08-18 19:22:24.082100145 +0200
***************
*** 771,772 ****
--- 771,774 ----
{ /* Add new patch number below this line */
+ /**/
+ 1884,
/**/
--
>From "know your smileys":
:-) Funny
|-) Funny Oriental
(-: Funny Australian
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/201908181724.x7IHOH1b005405%40masaka.moolenaar.net.