mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.0580: window size wrong if 'ea' is off and 'splitright' is on
Problem: Window size wrong if 'ea' is off and 'splitright' is on and splitting then closing a window. Solution: Put abandoned window space in the right place. (Mark Waggoner)
This commit is contained in:
parent
4d5d0dfe94
commit
edd327cc07
@ -194,3 +194,22 @@ func Test_tabwin_close()
|
|||||||
call assert_true(v:true)
|
call assert_true(v:true)
|
||||||
%bwipe!
|
%bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test when closing a split window (above/below) restores space to the window
|
||||||
|
" below when 'noequalalways' and 'splitright' are set.
|
||||||
|
func Test_window_close_splitright_noequalalways()
|
||||||
|
set noequalalways
|
||||||
|
set splitright
|
||||||
|
new
|
||||||
|
let w1 = win_getid()
|
||||||
|
new
|
||||||
|
let w2 = win_getid()
|
||||||
|
execute "normal \<c-w>b"
|
||||||
|
let h = winheight(0)
|
||||||
|
let w = win_getid()
|
||||||
|
new
|
||||||
|
q
|
||||||
|
call assert_equal(h, winheight(0), "Window height does not match eight before opening and closing another window")
|
||||||
|
call assert_equal(w, win_getid(), "Did not return to original window after opening and closing a window")
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
580,
|
||||||
/**/
|
/**/
|
||||||
579,
|
579,
|
||||||
/**/
|
/**/
|
||||||
|
15
src/window.c
15
src/window.c
@ -2967,9 +2967,22 @@ win_altframe(
|
|||||||
if (frp->fr_next == NULL)
|
if (frp->fr_next == NULL)
|
||||||
return frp->fr_prev;
|
return frp->fr_prev;
|
||||||
|
|
||||||
|
// By default the next window will get the space that was abandoned by this
|
||||||
|
// window
|
||||||
target_fr = frp->fr_next;
|
target_fr = frp->fr_next;
|
||||||
other_fr = frp->fr_prev;
|
other_fr = frp->fr_prev;
|
||||||
if (p_spr || p_sb)
|
|
||||||
|
// If this is part of a column of windows and 'splitbelow' is true then the
|
||||||
|
// previous window will get the space.
|
||||||
|
if (frp->fr_parent != NULL && frp->fr_parent->fr_layout == FR_COL && p_sb)
|
||||||
|
{
|
||||||
|
target_fr = frp->fr_prev;
|
||||||
|
other_fr = frp->fr_next;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If this is part of a row of windows, and 'splitright' is true then the
|
||||||
|
// previous window will get the space.
|
||||||
|
if (frp->fr_parent != NULL && frp->fr_parent->fr_layout == FR_ROW && p_spr)
|
||||||
{
|
{
|
||||||
target_fr = frp->fr_prev;
|
target_fr = frp->fr_prev;
|
||||||
other_fr = frp->fr_next;
|
other_fr = frp->fr_next;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user