patch 8.1.1905: cannot set all properties of the info popup
Problem: Cannot set all properties of the info popup.
Solution: Add popup_findinfo(). Rename popup_getpreview() to
popup_findpreview().
diff --git a/src/popupwin.c b/src/popupwin.c
index b8fc8fd..482c5a6 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2058,6 +2058,18 @@
popup_close_and_callback(wp, &argvars[1]);
}
+ static void
+popup_hide(win_T *wp)
+{
+ if ((wp->w_popup_flags & POPF_HIDDEN) == 0)
+ {
+ wp->w_popup_flags |= POPF_HIDDEN;
+ --wp->w_buffer->b_nwindows;
+ redraw_all_later(NOT_VALID);
+ popup_mask_refresh = TRUE;
+ }
+}
+
/*
* popup_hide({id})
*/
@@ -2067,10 +2079,17 @@
int id = (int)tv_get_number(argvars);
win_T *wp = find_popup_win(id);
- if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) == 0)
+ if (wp != NULL)
+ popup_hide(wp);
+}
+
+ void
+popup_show(win_T *wp)
+{
+ if ((wp->w_popup_flags & POPF_HIDDEN) != 0)
{
- wp->w_popup_flags |= POPF_HIDDEN;
- --wp->w_buffer->b_nwindows;
+ wp->w_popup_flags &= ~POPF_HIDDEN;
+ ++wp->w_buffer->b_nwindows;
redraw_all_later(NOT_VALID);
popup_mask_refresh = TRUE;
}
@@ -2085,13 +2104,8 @@
int id = (int)tv_get_number(argvars);
win_T *wp = find_popup_win(id);
- if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) != 0)
- {
- wp->w_popup_flags &= ~POPF_HIDDEN;
- ++wp->w_buffer->b_nwindows;
- redraw_all_later(NOT_VALID);
- popup_mask_refresh = TRUE;
- }
+ if (wp != NULL)
+ popup_show(wp);
}
/*
@@ -3314,7 +3328,15 @@
#endif
void
-f_popup_getpreview(typval_T *argvars UNUSED, typval_T *rettv)
+f_popup_findinfo(typval_T *argvars UNUSED, typval_T *rettv)
+{
+ win_T *wp = popup_find_info_window();
+
+ rettv->vval.v_number = wp == NULL ? 0 : wp->w_id;
+}
+
+ void
+f_popup_findpreview(typval_T *argvars UNUSED, typval_T *rettv)
{
win_T *wp = popup_find_preview_window();
@@ -3355,10 +3377,13 @@
}
#if defined(FEAT_QUICKFIX) || defined(PROTO)
+/*
+ * Close any preview popup.
+ */
void
-popup_close_preview(int info)
+popup_close_preview(void)
{
- win_T *wp = info ? popup_find_info_window() : popup_find_preview_window();
+ win_T *wp = popup_find_preview_window();
if (wp != NULL)
{
@@ -3369,6 +3394,18 @@
popup_close_and_callback(wp, &res);
}
}
+
+/*
+ * Hide the info popup.
+ */
+ void
+popup_hide_info(void)
+{
+ win_T *wp = popup_find_info_window();
+
+ if (wp != NULL)
+ popup_hide(wp);
+}
#endif
/*