# HG changeset patch # User Bram Moolenaar # Date 1639143903 -3600 # Node ID 06aa56b32df4d8b4131872352080b5fafe060c5a # Parent 24b0a8540cf4e43cc45800f8e8776d2336ef26b8 patch 8.2.3774: test for command line height fails Commit: https://github.com/vim/vim/commit/b711814cb64b60ec4918e3e1fb2ca5c50d6e9340 Author: Bram Moolenaar Date: Fri Dec 10 13:40:08 2021 +0000 patch 8.2.3774: test for command line height fails Problem: Test for command line height fails. Solution: Use another way to handle window size change. diff --git a/src/structs.h b/src/structs.h --- a/src/structs.h +++ b/src/structs.h @@ -3216,7 +3216,8 @@ struct tabpage_S win_T *tp_first_popupwin; // first popup window in this Tab page #endif long tp_old_Rows; // Rows when Tab page was left - long tp_old_Columns; // Columns when Tab page was left + long tp_old_Columns; // Columns when Tab page was left, -1 when + // calling shell_new_columns() postponed long tp_ch_used; // value of 'cmdheight' when frame size // was set #ifdef FEAT_GUI diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3774, +/**/ 3773, /**/ 3772, diff --git a/src/window.c b/src/window.c --- a/src/window.c +++ b/src/window.c @@ -4192,7 +4192,8 @@ leave_tabpage( tp->tp_firstwin = firstwin; tp->tp_lastwin = lastwin; tp->tp_old_Rows = Rows; - tp->tp_old_Columns = Columns; + if (tp->tp_old_Columns != -1) + tp->tp_old_Columns = Columns; firstwin = NULL; lastwin = NULL; return OK; @@ -4255,8 +4256,16 @@ enter_tabpage( #endif )) shell_new_rows(); - if (curtab->tp_old_Columns != Columns && starting == 0) - shell_new_columns(); // update window widths + if (curtab->tp_old_Columns != Columns) + { + if (starting == 0) + { + shell_new_columns(); // update window widths + curtab->tp_old_Columns = Columns; + } + else + curtab->tp_old_Columns = -1; // update window widths later + } lastused_tabpage = last_tab; @@ -5353,24 +5362,18 @@ win_free_lsize(win_T *wp) void shell_new_rows(void) { - tabpage_T *tp; + int h = (int)ROWS_AVAIL; if (firstwin == NULL) // not initialized yet return; - - FOR_ALL_TABPAGES(tp) - { - int h = (int)ROWS_AVAIL; - - if (h < frame_minheight(tp->tp_topframe, NULL)) - h = frame_minheight(tp->tp_topframe, NULL); - - // First try setting the heights of windows with 'winfixheight'. If - // that doesn't result in the right height, forget about that option. - frame_new_height(tp->tp_topframe, h, FALSE, TRUE); - if (!frame_check_height(tp->tp_topframe, h)) - frame_new_height(tp->tp_topframe, h, FALSE, FALSE); - } + if (h < frame_minheight(topframe, NULL)) + h = frame_minheight(topframe, NULL); + + // First try setting the heights of windows with 'winfixheight'. If + // that doesn't result in the right height, forget about that option. + frame_new_height(topframe, h, FALSE, TRUE); + if (!frame_check_height(topframe, h)) + frame_new_height(topframe, h, FALSE, FALSE); (void)win_comp_pos(); // recompute w_winrow and w_wincol compute_cmdrow(); @@ -5389,19 +5392,14 @@ shell_new_rows(void) void shell_new_columns(void) { - tabpage_T *tp; - if (firstwin == NULL) // not initialized yet return; - FOR_ALL_TABPAGES(tp) - { - // First try setting the widths of windows with 'winfixwidth'. If that - // doesn't result in the right width, forget about that option. - frame_new_width(tp->tp_topframe, (int)Columns, FALSE, TRUE); - if (!frame_check_width(tp->tp_topframe, Columns)) - frame_new_width(tp->tp_topframe, (int)Columns, FALSE, FALSE); - } + // First try setting the widths of windows with 'winfixwidth'. If that + // doesn't result in the right width, forget about that option. + frame_new_width(topframe, (int)Columns, FALSE, TRUE); + if (!frame_check_width(topframe, Columns)) + frame_new_width(topframe, (int)Columns, FALSE, FALSE); (void)win_comp_pos(); // recompute w_winrow and w_wincol #if 0