Skip to content

Commit 2a1e253

Browse files
rbtnnchrisbra
authored andcommitted
patch 9.1.1397: tabpanel not correctly updated on :tabonly
Problem: tabpanel not correctly updated on :tabonly (Maxim Kim) Solution: force a redraw, take 'equalalways' into account (Naruhiko Nishino) related: #17330 (comment) closes: #17337 Signed-off-by: Naruhiko Nishino <naru123456789@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
1 parent 7b9eb63 commit 2a1e253

8 files changed

+78
-2
lines changed

src/optionstr.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3561,8 +3561,6 @@ did_set_tabpanelopt(optset_T *args)
35613561
if (tabpanelopt_changed() == FAIL)
35623562
return e_invalid_argument;
35633563

3564-
shell_new_columns();
3565-
35663564
return NULL;
35673565
}
35683566

src/tabpanel.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ tabpanelopt_changed(void)
5959
int new_align = ALIGN_LEFT;
6060
int new_columns = 20;
6161
int new_is_vert = FALSE;
62+
int do_equal = 0;
6263

6364
p = p_tplo;
6465
while (*p != NUL)
@@ -90,10 +91,20 @@ tabpanelopt_changed(void)
9091
++p;
9192
}
9293

94+
// Whether all the windows are automatically made the same size
95+
// when tabpanel size is changed.
96+
do_equal = p_ea && tpl_columns != new_columns;
97+
9398
tpl_align = new_align;
9499
tpl_columns = new_columns;
95100
tpl_is_vert = new_is_vert;
96101

102+
shell_new_columns();
103+
redraw_tabpanel = TRUE;
104+
105+
if (do_equal)
106+
win_equal(curwin, FALSE, 0);
107+
97108
return OK;
98109
}
99110

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @11|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|3+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| | +1&&@32|X+8#0000001#e0e0e08
2+
|3+2#e000e06#ffffff0| +2#0000000&|[|N|o| |N|a|m|e|]| @8> +0&&@28||+1&&| +0&&@27
3+
| +1&&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26
4+
| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26
5+
| +1#0000000&@19|[+3&&|N|o| |N|a|m|e|]| @5|0|,|0|-|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @4|0|,|0|-|1| @5|A|l@1
6+
| @19| +0&&@57
7+
| +1&&@19|~+0#4040ff13&| @56
8+
| +1#0000000&@19|~+0#4040ff13&| @56
9+
| +1#0000000&@19|[|N|o| |N|a|m|e|]| @30|0|,|0|-|1| @9|A|l@1
10+
| +0&&@77
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @1|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|3+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| | +1&&@42|X+8#0000001#e0e0e08
2+
|3+2#e000e06#ffffff0| +2#0000000&|[|N|o| |N|a|m|e> +0&&@33||+1&&| +0&&@32
3+
| +1&&@9|~+0#4040ff13&| @32||+1#0000000&|~+0#4040ff13&| @31
4+
| +1#0000000&@9|~+0#4040ff13&| @32||+1#0000000&|~+0#4040ff13&| @31
5+
| +1#0000000&@9|[+3&&|N|o| |N|a|m|e|]| @7|0|,|0|-|1| @8|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @7|0|,|0|-|1| @7|A|l@1
6+
| @9| +0&&@67
7+
| +1&&@9|~+0#4040ff13&| @66
8+
| +1#0000000&@9|~+0#4040ff13&| @66
9+
| +1#0000000&@9|[|N|o| |N|a|m|e|]| @40|0|,|0|-|1| @9|A|l@1
10+
|:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|1|0| @50
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @21|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|3+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| | +1&&@22|X+8#0000001#e0e0e08
2+
|3+2#e000e06#ffffff0| +2#0000000&|[|N|o| |N|a|m|e|]| @18> +0&&@23||+1&&| +0&&@22
3+
| +1&&@29|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @21
4+
| +1#0000000&@29|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @21
5+
| +1#0000000&@29|[+3&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @2|A|l@1
6+
| @29| +0&&@47
7+
| +1&&@29|~+0#4040ff13&| @46
8+
| +1#0000000&@29|~+0#4040ff13&| @46
9+
| +1#0000000&@29|[|N|o| |N|a|m|e|]| @20|0|,|0|-|1| @9|A|l@1
10+
|:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|3|0| @50
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
|[+8#0000001#e0e0e08|N|o| |N| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|3+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| | +1&&@47|X+8#0000001#e0e0e08
2+
|3+2#e000e06#ffffff0| +2#0000000&|[|N|o> +0&&@35||+1&&| +0&&@35
3+
| +1&&@4|~+0#4040ff13&| @34||+1#0000000&|~+0#4040ff13&| @34
4+
| +1#0000000&@4|~+0#4040ff13&| @34||+1#0000000&|~+0#4040ff13&| @34
5+
| +1#0000000&@4|[+3&&|N|o| |N|a|m|e|]| @8|0|,|0|-|1| @9|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @8|0|,|0|-|1| @9|A|l@1
6+
| @4| +0&&@72
7+
| +1&&@4|~+0#4040ff13&| @71
8+
| +1#0000000&@4|~+0#4040ff13&| @71
9+
| +1#0000000&@4|[|N|o| |N|a|m|e|]| @45|0|,|0|-|1| @9|A|l@1
10+
|:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|5| @51

src/testdir/test_tabpanel.vim

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,4 +496,29 @@ function Test_tabpanel_tabonly()
496496
call StopVimInTerminal(buf)
497497
endfunc
498498

499+
function Test_tabpanel_equalalways()
500+
CheckScreendump
501+
502+
let lines =<< trim END
503+
tabnew
504+
set showtabpanel=1
505+
set tabpanelopt=columns:20
506+
set equalalways
507+
split
508+
vsplit
509+
END
510+
call writefile(lines, 'XTest_tabpanel_equalalways', 'D')
511+
512+
let buf = RunVimInTerminal('-S XTest_tabpanel_equalalways', {'rows': 10, 'cols': 78})
513+
call VerifyScreenDump(buf, 'Test_tabpanel_equalalways_0', {})
514+
call term_sendkeys(buf, ":set tabpanelopt=columns:10\<CR>")
515+
call VerifyScreenDump(buf, 'Test_tabpanel_equalalways_1', {})
516+
call term_sendkeys(buf, ":set tabpanelopt=columns:30\<CR>")
517+
call VerifyScreenDump(buf, 'Test_tabpanel_equalalways_2', {})
518+
call term_sendkeys(buf, ":set tabpanelopt=columns:5\<CR>")
519+
call VerifyScreenDump(buf, 'Test_tabpanel_equalalways_3', {})
520+
521+
call StopVimInTerminal(buf)
522+
endfunc
523+
499524
" vim: shiftwidth=2 sts=2 expandtab

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,8 @@ static char *(features[]) =
709709

710710
static int included_patches[] =
711711
{ /* Add new patch number below this line */
712+
/**/
713+
1397,
712714
/**/
713715
1396,
714716
/**/

0 commit comments

Comments
 (0)