diff --git a/src/term.c b/src/term.c index a1bb6c1b97..a5fab44ea8 100644 --- a/src/term.c +++ b/src/term.c @@ -5791,7 +5791,10 @@ handle_csi( key_name[0] = (int)KS_EXTRA; key_name[1] = (int)KE_IGNORE; - set_shellsize(width, height, true); + // Only update if needed. Avoids intro message from disappearing on + // startup (due to initial event). + if (height != Rows || width != Columns) + set_shellsize(width, height, true); } #endif diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim index e5f31259e5..90cbc87df9 100644 --- a/src/testdir/test_termcodes.vim +++ b/src/testdir/test_termcodes.vim @@ -2991,6 +2991,16 @@ func Test_term_win_resize() call WaitForAssert({-> assert_equal(["50 100"], readfile("XTestWinResizeResult"))}) + " Test that screen is only resized if it actually changed in width or height. + call term_sendkeys(buf, "\:intro\") + call TermWait(buf) + + call term_sendkeys(buf, "\[48;50;100;0;0t") + call TermWait(buf) + + " call delete("tmp.dump") + " call term_dumpwrite(buf, "tmp.dump") + " SIGWINCH handler should be uninstalled call job_stop(term_getjob(buf), 28) call TermWait(buf) diff --git a/src/version.c b/src/version.c index c0f5c7488a..c215222c90 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 161, /**/ 160, /**/