mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(api): adjust fix for reconfiguring float "relative" (#34287)
Problem: "win" is cleared in float config after96330843, even with unchanged "relative". Solution: Don't clear "win". Avoid erroring for deleted "win" by setting the parent win to curwin directly when "win" is zero or not present in config. (cherry picked from commiteeacd7bd71)
This commit is contained in:
		 luukvbaal
					luukvbaal
				
			
				
					committed by
					
						![github-actions[bot]](/assets/img/avatar_default.png) github-actions[bot]
						github-actions[bot]
					
				
			
			
				
	
			
			
			![github-actions[bot]](/assets/img/avatar_default.png) github-actions[bot]
						github-actions[bot]
					
				
			
						parent
						
							222b3d5021
						
					
				
				
					commit
					aa6136f956
				
			| @@ -235,8 +235,9 @@ Window nvim_open_win(Buffer buffer, Boolean enter, Dict(win_config) *config, Err | ||||
|  | ||||
|   win_T *wp = NULL; | ||||
|   tabpage_T *tp = curtab; | ||||
|   win_T *parent = NULL; | ||||
|   if (config->win != -1) { | ||||
|   assert(curwin != NULL); | ||||
|   win_T *parent = config->win == 0 ? curwin : NULL; | ||||
|   if (config->win > 0) { | ||||
|     parent = find_window_by_handle(fconfig.window, err); | ||||
|     if (!parent) { | ||||
|       // find_window_by_handle has already set the error | ||||
| @@ -408,8 +409,8 @@ void nvim_win_set_config(Window window, Dict(win_config) *config, Error *err) | ||||
|   if (!parse_win_config(win, config, &fconfig, !was_split || to_split, err)) { | ||||
|     return; | ||||
|   } | ||||
|   win_T *parent = NULL; | ||||
|   if (config->win != -1) { | ||||
|   win_T *parent = config->win == 0 ? curwin : NULL; | ||||
|   if (config->win > 0) { | ||||
|     parent = find_window_by_handle(fconfig.window, err); | ||||
|     if (!parent) { | ||||
|       return; | ||||
| @@ -1193,8 +1194,6 @@ static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fco | ||||
|                     "non-float with 'win' requires at least 'split' or 'vertical'"); | ||||
|       goto fail; | ||||
|     } | ||||
|   } else { | ||||
|     fconfig->window = 0; | ||||
|   } | ||||
|  | ||||
|   if (HAS_KEY_X(config, external)) { | ||||
|   | ||||
| @@ -388,7 +388,11 @@ describe('float window', function() | ||||
|       row = 1, | ||||
|     }) | ||||
|     eq(1001, api.nvim_win_get_config(winid).win) | ||||
|     -- But unrelated config doesn't clear parent win #34286 | ||||
|     api.nvim_win_set_config(winid, { title = 'foo' }) | ||||
|     eq(1001, api.nvim_win_get_config(winid).win) | ||||
|     command('close') | ||||
|     api.nvim_win_set_config(winid, { title = 'bar' }) | ||||
|     api.nvim_win_set_config(winid, { relative = 'editor', row = 1, col = 1 }) | ||||
|     eq(nil, api.nvim_win_get_config(winid).win) | ||||
|   end) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user