diff src/terminal.c @ 24582:1a658c5eb326 v8.2.2830

patch 8.2.2830: terminal colors are not updated when 'background' is set Commit: https://github.com/vim/vim/commit/ad431995721b2a886f789e2ea7db4c84b732eb18 Author: Bram Moolenaar <Bram@vim.org> Date: Mon May 3 20:40:38 2021 +0200 patch 8.2.2830: terminal colors are not updated when 'background' is set Problem: Terminal colors are not updated when 'background' is set. Solution: Call term_update_colors() for all terminals. (Marcin Szamotulski, closes #8171, closes #8150)
author Bram Moolenaar <Bram@vim.org>
date Mon, 03 May 2021 20:45:04 +0200
parents 7a4cc4d3a40a
children d957c7bbacf3
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -4590,9 +4590,9 @@ create_vterm(term_T *term, int rows, int
  * Called when 'wincolor' was set.
  */
     void
-term_update_colors(void)
-{
-    term_T *term = curwin->w_buffer->b_term;
+term_update_colors(term_T *term)
+{
+    win_T *wp;
 
     if (term->tl_vterm == NULL)
 	return;
@@ -4602,7 +4602,21 @@ term_update_colors(void)
 	    &term->tl_default_color.fg,
 	    &term->tl_default_color.bg);
 
-    redraw_later(NOT_VALID);
+    FOR_ALL_WINDOWS(wp)
+	if (wp->w_buffer == term->tl_buffer)
+	    redraw_win_later(wp, NOT_VALID);
+}
+
+/*
+ * Called when 'background' was set.
+ */
+    void
+term_update_colors_all(void)
+{
+    term_T *tp;
+
+    FOR_ALL_TERMS(tp)
+	term_update_colors(tp);
 }
 
 /*
@@ -5939,7 +5953,7 @@ f_term_list(typval_T *argvars UNUSED, ty
 
     l = rettv->vval.v_list;
     FOR_ALL_TERMS(tp)
-	if (tp != NULL && tp->tl_buffer != NULL)
+	if (tp->tl_buffer != NULL)
 	    if (list_append_number(l,
 				   (varnumber_T)tp->tl_buffer->b_fnum) == FAIL)
 		return;