summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-12-10 13:40:08 +0000
committerBram Moolenaar <Bram@vim.org>2021-12-10 13:40:08 +0000
commitb711814cb64b60ec4918e3e1fb2ca5c50d6e9340 (patch)
treeb1465d0aa9b2013b40b08485628536f9f9dc23a1
parent8a7374f8c4eb4c016270ad908a43af4ddedcbf56 (diff)
downloadvim-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.h3
-rw-r--r--src/version.c2
-rw-r--r--src/window.c52
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