diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-12-10 13:40:08 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-12-10 13:40:08 +0000 |
commit | b711814cb64b60ec4918e3e1fb2ca5c50d6e9340 (patch) | |
tree | b1465d0aa9b2013b40b08485628536f9f9dc23a1 | |
parent | 8a7374f8c4eb4c016270ad908a43af4ddedcbf56 (diff) | |
download | vim-git-b711814cb64b60ec4918e3e1fb2ca5c50d6e9340.tar.gz |
patch 8.2.3774: test for command line height failsv8.2.3774
Problem: Test for command line height fails.
Solution: Use another way to handle window size change.
-rw-r--r-- | src/structs.h | 3 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 52 |
3 files changed, 29 insertions, 28 deletions
diff --git a/src/structs.h b/src/structs.h index b8ffbe4a7..a5850d439 100644 --- 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 index 43be175c6..79abb50b2 100644 --- 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 index 2640db17e..44ecdc42e 100644 --- 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; + if (h < frame_minheight(topframe, NULL)) + h = frame_minheight(topframe, NULL); - 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); - } + // 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 |