patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Problem: Popup_setoptions(popup_getoptions()) does not work.
Solution: Also accept a list with three entries for "moved" and
"mousemoved". (closes #5081)
diff --git a/src/popupwin.c b/src/popupwin.c
index 95435f8..a957932 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -493,12 +493,28 @@
}
else if (di->di_tv.v_type == VAR_LIST
&& di->di_tv.vval.v_list != NULL
- && di->di_tv.vval.v_list->lv_len == 2)
+ && (di->di_tv.vval.v_list->lv_len == 2
+ || di->di_tv.vval.v_list->lv_len == 3))
{
- list_T *l = di->di_tv.vval.v_list;
- int mincol = tv_get_number(&l->lv_first->li_tv);
- int maxcol = tv_get_number(&l->lv_first->li_next->li_tv);
+ list_T *l = di->di_tv.vval.v_list;
+ listitem_T *li = l->lv_first;
+ int mincol;
+ int maxcol;
+ if (di->di_tv.vval.v_list->lv_len == 3)
+ {
+ varnumber_T nr = tv_get_number(&l->lv_first->li_tv);
+
+ // Three numbers, might be from popup_getoptions().
+ if (mousemoved)
+ wp->w_popup_mouse_row = nr;
+ else
+ wp->w_popup_lnum = nr;
+ li = li->li_next;
+ }
+
+ mincol = tv_get_number(&li->li_tv);
+ maxcol = tv_get_number(&li->li_next->li_tv);
if (mousemoved)
{
wp->w_popup_mouse_mincol = mincol;