changeset 12493:d83815e9ae47 v8.0.1126

patch 8.0.1126: endless resize when terminal showing in two buffers commit https://github.com/vim/vim/commit/71b29640669872b0209985fc5a3b447de62a4cf0 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Sep 18 21:24:56 2017 +0200 patch 8.0.1126: endless resize when terminal showing in two buffers Problem: Endless resize when terminal showing in two buffers. (Hirohito Higashi) Solution: Set a flag to prevent resizing the window.
author Christian Brabandt <cb@256bit.org>
date Mon, 18 Sep 2017 21:30:05 +0200
parents 35aade9a0fc8
children b08f916fec04
files src/terminal.c src/version.c
diffstat 2 files changed, 17 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -99,6 +99,9 @@ struct terminal_S {
     job_T	*tl_job;
     buf_T	*tl_buffer;
 
+    /* Set when setting the size of a vterm, reset after redrawing. */
+    int		tl_vterm_size_changed;
+
     /* used when tl_job is NULL and only a pty was created */
     int		tl_tty_fd;
     char_u	*tl_tty_in;
@@ -2017,16 +2020,21 @@ handle_resize(int rows, int cols, void *
 
     term->tl_rows = rows;
     term->tl_cols = cols;
-    FOR_ALL_WINDOWS(wp)
+    if (term->tl_vterm_size_changed)
+	/* Size was set by vterm_set_size(), don't set the window size. */
+	term->tl_vterm_size_changed = FALSE;
+    else
     {
-	if (wp->w_buffer == term->tl_buffer)
+	FOR_ALL_WINDOWS(wp)
 	{
-	    win_setheight_win(rows, wp);
-	    win_setwidth_win(cols, wp);
+	    if (wp->w_buffer == term->tl_buffer)
+	    {
+		win_setheight_win(rows, wp);
+		win_setwidth_win(cols, wp);
+	    }
 	}
+	redraw_buf_later(term->tl_buffer, NOT_VALID);
     }
-
-    redraw_buf_later(term->tl_buffer, NOT_VALID);
     return 1;
 }
 
@@ -2223,6 +2231,7 @@ term_update_window(win_T *wp)
 	    }
 	}
 
+	term->tl_vterm_size_changed = TRUE;
 	vterm_set_size(vterm, rows, cols);
 	ch_log(term->tl_job->jv_channel, "Resizing terminal to %d lines",
 									 rows);
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1126,
+/**/
     1125,
 /**/
     1124,