changeset 23859:12b446696927 v8.2.2471

patch 8.2.2471: popup_setoptions() does not set textprop in other tab Commit: https://github.com/vim/vim/commit/efa1923565f0669d5bc09714b22a3b50cde03785 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 6 14:59:27 2021 +0100 patch 8.2.2471: popup_setoptions() does not set textprop in other tab Problem: Popup_setoptions() does not set textprop in other tab. Solution: use win_valid_any_tab(). (closes https://github.com/vim/vim/issues/7788)
author Bram Moolenaar <Bram@vim.org>
date Sat, 06 Feb 2021 15:00:04 +0100
parents 970d9e1bbbab
children a8e6303f7da7
files src/popupwin.c src/testdir/test_popupwin.vim src/version.c
diffstat 3 files changed, 22 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -461,7 +461,7 @@ apply_move_options(win_T *wp, dict_T *d)
 	    if (di != NULL)
 	    {
 		wp->w_popup_prop_win = find_win_by_nr_or_id(&di->di_tv);
-		if (!win_valid(wp->w_popup_prop_win))
+		if (!win_valid_any_tab(wp->w_popup_prop_win))
 		    wp->w_popup_prop_win = curwin;
 	    }
 
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -3813,8 +3813,27 @@ func Test_popup_getoptions_other_tab()
   call assert_equal(['textprop', 'textpropid', 'textpropwin'], popup_getoptions(id)->keys()->filter({_, v -> v =~ 'textprop'}))
 
   tabclose
+  call popup_close(id)
   bwipe!
   call prop_type_delete('textprop')
 endfunc
 
+
+func Test_popup_setoptions_other_tab()
+  new Xfile
+  let winid = win_getid()
+  call setline(1, 'some text')
+  call prop_type_add('textprop', {})
+  call prop_add(1, 1, #{type: 'textprop', length: 1})
+  let id = popup_create('TEST', #{textprop: 'textprop'})
+  tab sp
+  call popup_setoptions(id, #{textprop: 'textprop', textpropwin: winid})
+  call assert_equal(winid, popup_getoptions(id).textpropwin)
+
+  tabclose
+  call popup_close(id)
+  bwipe! Xfile
+  call prop_type_delete('textprop')
+endfunc
+
 " vim: shiftwidth=2 sts=2
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2471,
+/**/
     2470,
 /**/
     2469,