aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2024-09-28 06:02:14 +0800
committerGitHub <noreply@github.com>2024-09-28 06:02:14 +0800
commit7b71fdbc1e9fcb71e642e67e0ac9a2711dd67df0 (patch)
tree911bafafb5298e43f30758b515e21ccde466af0e /src
parent09d76afe84dd5b895e102dcd8df8ce6271bebfef (diff)
downloadrneovim-7b71fdbc1e9fcb71e642e67e0ac9a2711dd67df0.tar.gz
rneovim-7b71fdbc1e9fcb71e642e67e0ac9a2711dd67df0.tar.bz2
rneovim-7b71fdbc1e9fcb71e642e67e0ac9a2711dd67df0.zip
fix(window): respect hide flag of float windows when switching (#30507)
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_cmds2.c2
-rw-r--r--src/nvim/window.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c
index 210539d6a4..aff9dce7c1 100644
--- a/src/nvim/ex_cmds2.c
+++ b/src/nvim/ex_cmds2.c
@@ -590,7 +590,7 @@ void ex_listdo(exarg_T *eap)
break;
}
assert(wp);
- execute = !wp->w_floating || wp->w_config.focusable;
+ execute = !wp->w_floating || (!wp->w_config.hide && wp->w_config.focusable);
if (execute) {
win_goto(wp);
if (curwin != wp) {
diff --git a/src/nvim/window.c b/src/nvim/window.c
index f61485ccb3..f7d5ee92cd 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -359,13 +359,13 @@ newwindow:
wp = lastwin; // wrap around
}
while (wp != NULL && wp->w_floating
- && !wp->w_config.focusable) {
+ && (wp->w_config.hide || !wp->w_config.focusable)) {
wp = wp->w_prev;
}
} else { // go to next window
wp = curwin->w_next;
while (wp != NULL && wp->w_floating
- && !wp->w_config.focusable) {
+ && (wp->w_config.hide || !wp->w_config.focusable)) {
wp = wp->w_next;
}
if (wp == NULL) {
@@ -2851,7 +2851,7 @@ int win_close(win_T *win, bool free_buf, bool force)
break;
}
if (!wp->w_p_pvw && !bt_quickfix(wp->w_buffer)
- && !(wp->w_floating && !wp->w_config.focusable)) {
+ && !(wp->w_floating && (wp->w_config.hide || !wp->w_config.focusable))) {
curwin = wp;
break;
}