diff options
author | glepnir <glephunter@gmail.com> | 2023-09-27 17:23:42 +0800 |
---|---|---|
committer | glepnir <glephunter@gmail.com> | 2023-09-30 18:30:23 +0800 |
commit | 4200a0f1678c06c6da4e4cfb0184c29c1174ed21 (patch) | |
tree | 0a76101997ab9b1a13b699abdc65e3f39c8df43c /src/nvim/window.c | |
parent | dfa8b582a64aa22d3c57261bfcdc970b26cb58f3 (diff) | |
download | rneovim-4200a0f1678c06c6da4e4cfb0184c29c1174ed21.tar.gz rneovim-4200a0f1678c06c6da4e4cfb0184c29c1174ed21.tar.bz2 rneovim-4200a0f1678c06c6da4e4cfb0184c29c1174ed21.zip |
feat(float): support toggle show float window
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r-- | src/nvim/window.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index 1208494eaf..98fe96af87 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -990,9 +990,13 @@ void ui_ext_win_position(win_T *wp, bool validate) wp->w_grid_alloc.zindex = wp->w_float_config.zindex; if (ui_has(kUIMultigrid)) { String anchor = cstr_as_string((char *)float_anchor_str[c.anchor]); - ui_call_win_float_pos(wp->w_grid_alloc.handle, wp->handle, anchor, - grid->handle, row, col, c.focusable, - wp->w_grid_alloc.zindex); + if (!c.hide) { + ui_call_win_float_pos(wp->w_grid_alloc.handle, wp->handle, anchor, + grid->handle, row, col, c.focusable, + wp->w_grid_alloc.zindex); + } else { + ui_call_win_hide(wp->w_grid_alloc.handle); + } } else { bool valid = (wp->w_redr_type == 0); if (!valid && !validate) { @@ -1014,13 +1018,18 @@ void ui_ext_win_position(win_T *wp, bool validate) } wp->w_winrow = comp_row; wp->w_wincol = comp_col; - ui_comp_put_grid(&wp->w_grid_alloc, comp_row, comp_col, - wp->w_height_outer, wp->w_width_outer, valid, false); - ui_check_cursor_grid(wp->w_grid_alloc.handle); - wp->w_grid_alloc.focusable = wp->w_float_config.focusable; - if (!valid) { - wp->w_grid_alloc.valid = false; - redraw_later(wp, UPD_NOT_VALID); + + if (!c.hide) { + ui_comp_put_grid(&wp->w_grid_alloc, comp_row, comp_col, + wp->w_height_outer, wp->w_width_outer, valid, false); + ui_check_cursor_grid(wp->w_grid_alloc.handle); + wp->w_grid_alloc.focusable = wp->w_float_config.focusable; + if (!valid) { + wp->w_grid_alloc.valid = false; + redraw_later(wp, UPD_NOT_VALID); + } + } else { + ui_comp_remove_grid(&wp->w_grid_alloc); } } } else { |