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:
committed by
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