changeset 17121:808ea76535a9 v8.1.1560

patch 8.1.1560: popup window hidden option not implemented yet commit https://github.com/vim/vim/commit/6313c4f41d0e1d91b4217557685c014ea919915f Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 16 20:39:13 2019 +0200 patch 8.1.1560: popup window hidden option not implemented yet Problem: Popup window hidden option not implemented yet. Solution: Implement the hidden option.
author Bram Moolenaar <Bram@vim.org>
date Sun, 16 Jun 2019 20:45:04 +0200
parents d6f065ba684d
children 310e8655d123
files src/popupwin.c src/testdir/test_popupwin.vim src/version.c
diffstat 3 files changed, 45 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -428,6 +428,13 @@ apply_options(win_T *wp, buf_T *buf UNUS
 	    semsg(_(e_invarg2), tv_get_string(&di->di_tv));
     }
 
+    nr = dict_get_number(dict, (char_u *)"hidden");
+    if (nr > 0)
+    {
+	wp->w_popup_flags |= POPF_HIDDEN;
+	--wp->w_buffer->b_nwindows;
+    }
+
     popup_mask_refresh = TRUE;
 }
 
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -1310,7 +1310,7 @@ func Test_notifications()
   call delete('XtestNotifications')
 endfunc
 
-function Test_popup_settext()
+func Test_popup_settext()
   if !CanRunVimInTerminal()
     throw 'Skipped: cannot make screendumps'
   endif
@@ -1352,4 +1352,38 @@ function Test_popup_settext()
   " clean up
   call StopVimInTerminal(buf)
   call delete('XtestPopupSetText')
-endfunction
+endfunc
+
+func Test_popup_hidden()
+  new
+
+  let winid = popup_atcursor('text', {'hidden': 1})
+  redraw
+  call assert_equal(0, popup_getpos(winid).visible)
+  call popup_close(winid)
+
+  let winid = popup_create('text', {'hidden': 1})
+  redraw
+  call assert_equal(0, popup_getpos(winid).visible)
+  call popup_close(winid)
+
+  func QuitCallback(id, res)
+    let s:cb_winid = a:id
+    let s:cb_res = a:res
+  endfunc
+  let winid = popup_dialog('make a choice', {'hidden': 1,
+	  \ 'filter': 'popup_filter_yesno',
+	  \ 'callback': 'QuitCallback',
+	  \ })
+  redraw
+  call assert_equal(0, popup_getpos(winid).visible)
+  exe "normal anot used by filter\<Esc>"
+  call assert_equal('not used by filter', getline(1))
+
+  call popup_show(winid)
+  call feedkeys('y', "xt")
+  call assert_equal(1, s:cb_res)
+
+  bwipe!
+  delfunc QuitCallback
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1560,
+/**/
     1559,
 /**/
     1558,