Mercurial > vim
changeset 16892:60c9ac14a2ec v8.1.1447
patch 8.1.1447: not allowed to create an empty popup
commit https://github.com/vim/vim/commit/7b29dd850752b975baef47b66c590f5e978ad847
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 2 13:22:11 2019 +0200
patch 8.1.1447: not allowed to create an empty popup
Problem: Not allowed to create an empty popup.
Solution: Remove restriction that there is some text. (closes https://github.com/vim/vim/issues/4470)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 02 Jun 2019 13:30:05 +0200 |
parents | bdd52b0f05f5 |
children | 7277e70d5dab |
files | src/popupwin.c src/testdir/test_popupwin.vim src/version.c |
diffstat | 3 files changed, 27 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/popupwin.c +++ b/src/popupwin.c @@ -488,12 +488,8 @@ popup_create(typval_T *argvars, typval_T int nr; // Check arguments look OK. - if (!(argvars[0].v_type == VAR_STRING - && argvars[0].vval.v_string != NULL - && STRLEN(argvars[0].vval.v_string) > 0) - && !(argvars[0].v_type == VAR_LIST - && argvars[0].vval.v_list != NULL - && argvars[0].vval.v_list->lv_len > 0)) + if (!(argvars[0].v_type == VAR_STRING && argvars[0].vval.v_string != NULL) + && !(argvars[0].v_type == VAR_LIST && argvars[0].vval.v_list != NULL)) { emsg(_(e_listreq)); return; @@ -560,12 +556,15 @@ popup_create(typval_T *argvars, typval_T { list_T *l = argvars[0].vval.v_list; - if (l->lv_first->li_tv.v_type == VAR_STRING) - // list of strings - add_popup_strings(buf, l); - else - // list of dictionaries - add_popup_dicts(buf, l); + if (l->lv_len > 0) + { + if (l->lv_first->li_tv.v_type == VAR_STRING) + // list of strings + add_popup_strings(buf, l); + else + // list of dictionaries + add_popup_dicts(buf, l); + } } // Delete the line of the empty buffer.
--- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -596,3 +596,17 @@ func Test_popup_close_callback() call popup_close(winid, 'done') call assert_equal('done', g:result) endfunc + +func Test_popup_empty() + let winid = popup_create('', {'padding': [2,2,2,2]}) + redraw + let pos = popup_getpos(winid) + call assert_equal(4, pos.width) + call assert_equal(5, pos.height) + + let winid = popup_create([], {'border': []}) + redraw + let pos = popup_getpos(winid) + call assert_equal(2, pos.width) + call assert_equal(3, pos.height) +endfunc