0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.0984: not using previous window when closing a shell popup window

Problem:    Not using previous window when closing a shell popup window.
Solution:   Use "prevwin" if it was set. (closes #6267)
This commit is contained in:
Bram Moolenaar
2020-06-15 21:19:08 +02:00
parent ad72350360
commit ab176ce982
3 changed files with 35 additions and 5 deletions

View File

@@ -2147,6 +2147,19 @@ invoke_popup_callback(win_T *wp, typval_T *result)
clear_tv(&rettv);
}
/*
* Make "prevwin" the current window, unless it's equal to "wp".
* Otherwise make "firstwin" the current window.
*/
static void
back_to_prevwin(win_T *wp)
{
if (win_valid(prevwin) && wp != prevwin)
win_enter(prevwin, FALSE);
else
win_enter(firstwin, FALSE);
}
/*
* Close popup "wp" and invoke any close callback for it.
*/
@@ -2178,10 +2191,8 @@ popup_close_and_callback(win_T *wp, typval_T *arg)
break;
if (owp != NULL)
win_enter(owp, FALSE);
else if (win_valid(prevwin) && wp != prevwin)
win_enter(prevwin, FALSE);
else
win_enter(firstwin, FALSE);
back_to_prevwin(wp);
}
}
#endif
@@ -2583,7 +2594,7 @@ popup_close(int id, int force)
error_for_popup_window();
return FAIL;
}
win_enter(firstwin, FALSE);
back_to_prevwin(wp);
}
if (prev == NULL)
first_popupwin = wp->w_next;
@@ -2620,7 +2631,7 @@ popup_close_tabpage(tabpage_T *tp, int id, int force)
error_for_popup_window();
return FAIL;
}
win_enter(firstwin, FALSE);
back_to_prevwin(wp);
}
if (prev == NULL)
*root = wp->w_next;