diff src/window.c @ 19143:bfcafd1a3e37 v8.2.0131

patch 8.2.0131: command line is not cleared when switching tabs Commit: https://github.com/vim/vim/commit/479950f6c9aee4806f28a2b2fe5471e18a034cff Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 19 15:45:17 2020 +0100 patch 8.2.0131: command line is not cleared when switching tabs Problem: Command line is not cleared when switching tabs and the command line height differs. Solution: Set the "clear_cmdline" flag when needed. (Naruhiko Nishino, closes #5495)
author Bram Moolenaar <Bram@vim.org>
date Sun, 19 Jan 2020 16:00:04 +0100
parents 050f5eaa9e50
children 013f20a3bc6b
line wrap: on
line diff
--- a/src/window.c
+++ b/src/window.c
@@ -4093,6 +4093,7 @@ enter_tabpage(
     int		trigger_enter_autocmds,
     int		trigger_leave_autocmds)
 {
+    int		row;
     int		old_off = tp->tp_firstwin->w_winrow;
     win_T	*next_prevwin = tp->tp_prevwin;
 
@@ -4109,7 +4110,7 @@ enter_tabpage(
     prevwin = next_prevwin;
 
     last_status(FALSE);		// status line may appear or disappear
-    (void)win_comp_pos();	// recompute w_winrow for all windows
+    row = win_comp_pos();	// recompute w_winrow for all windows
 #ifdef FEAT_DIFF
     diff_need_scrollbind = TRUE;
 #endif
@@ -4121,6 +4122,13 @@ enter_tabpage(
     if (p_ch != curtab->tp_ch_used)
 	clear_cmdline = TRUE;
     p_ch = curtab->tp_ch_used;
+
+    // When cmdheight is changed in a tab page with '<C-w>-', cmdline_row is
+    // changed but p_ch and tp_ch_used are not changed. Thus we also need to
+    // check cmdline_row.
+    if ((row < cmdline_row) && (cmdline_row <= Rows - p_ch))
+	clear_cmdline = TRUE;
+
     if (curtab->tp_old_Rows != Rows || (old_off != firstwin->w_winrow
 #ifdef FEAT_GUI_TABLINE
 			    && !gui_use_tabline()