if (old_Rows != Rows || old_Columns != COLUMNS_WITHOUT_TPL()
|| old_coloff != TPL_LCOL())
ui_new_shellsize();
+ if (old_Columns != COLUMNS_WITHOUT_TPL() || old_coloff != TPL_LCOL())
+ {
+ old_Columns = COLUMNS_WITHOUT_TPL();
+ old_coloff = TPL_LCOL();
+
+ shell_new_columns();
+ }
if (old_Rows != Rows)
{
// If 'window' uses the whole screen, keep it using that.
old_Rows = Rows;
shell_new_rows(); // update window sizes
}
- if (old_Columns != COLUMNS_WITHOUT_TPL() || old_coloff != TPL_LCOL())
- {
- old_Columns = COLUMNS_WITHOUT_TPL();
- old_coloff = TPL_LCOL();
-
- shell_new_columns();
- }
}
/*
%bw!
endfunc
+func Test_VimResized_and_window_width_not_equalized()
+ CheckRunVimInTerminal
+
+ let lines =<< trim END
+ let g:vim_resized = 0
+ autocmd VimResized * let g:vim_resized = 1
+ 10vsplit
+ END
+ call writefile(lines, 'XTest_VimResize', 'D')
+ let buf = RunVimInTerminal('-S XTest_VimResize', {'rows': 10, 'cols': 30})
+
+ " redraw now to avoid a redraw after the :echo command
+ call term_sendkeys(buf, ":redraw!\<CR>")
+ call TermWait(buf)
+
+ call term_sendkeys(buf, ":set columns=40\<CR>")
+ call term_sendkeys(buf, ":echo 'VimResized:' g:vim_resized\<CR>")
+ call WaitForAssert({-> assert_match('^VimResized: 1$', term_getline(buf, 10))}, 1000)
+ call term_sendkeys(buf, ":let window_width = getwininfo(win_getid())[0].width\<CR>")
+ call term_sendkeys(buf, ":echo 'window_width:' window_width\<CR>")
+ call WaitForAssert({-> assert_match('^window_width: 10$', term_getline(buf, 10))}, 1000)
+
+ call StopVimInTerminal(buf)
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1513,
/**/
1512,
/**/
}
free_tp = TRUE;
redraw_tabline = TRUE;
+ shell_new_columns();
if (h != tabline_height())
shell_new_rows();
- shell_new_columns();
}
// Free the memory used for the window.
/*
* Called from win_new_shellsize() after Rows changed.
* This only does the current tab page, others must be done when made active.
+ * Note: When called together with shell_new_columns(), call shell_new_columns()
+ * first to avoid this function updating firstwin->w_wincol first.
*/
void
shell_new_rows(void)
if (firstwin == NULL) // not initialized yet
return;
+#if defined(FEAT_TABPANEL)
int save_wincol = firstwin->w_wincol;
int save_fr_width = topframe->fr_width;
+#endif
int w = COLUMNS_WITHOUT_TPL();
// First try setting the widths of windows with 'winfixwidth'. If that
win_comp_pos(); // recompute w_winrow and w_wincol
- if (p_ea && (firstwin->w_wincol != save_wincol
- || topframe->fr_width != save_fr_width))
+#if defined(FEAT_TABPANEL)
+ if (p_ea && firstwin->w_wincol + topframe->fr_width
+ == save_wincol + save_fr_width &&
+ (firstwin->w_wincol != save_wincol ||
+ topframe->fr_width != save_fr_width))
win_equal(curwin, FALSE, 0);
+#endif
if (!skip_win_fix_scroll)
win_fix_scroll(TRUE);