patch 8.1.1078: when 'listchars' is set a composing char on a space is wrong

Problem:    When 'listchars' is set a composing char on a space is wrong.
Solution:   Separate handling a non-breaking space and a space. (Yasuhiro
            Matsumoto, closes #4046)
diff --git a/src/screen.c b/src/screen.c
index 7706b6c..c3cc8cd 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -4808,30 +4808,34 @@
 		}
 #endif
 
-		/* 'list': change char 160 to lcs_nbsp and space to lcs_space.
-		 */
-		if (wp->w_p_list
-			&& (((c == 160
-			      || (mb_utf8 && (mb_c == 160 || mb_c == 0x202f)))
-				&& lcs_nbsp)
-			|| (c == ' ' && lcs_space && ptr - line <= trailcol)))
+		// 'list': change char 160 to lcs_nbsp and space to lcs_space.
+		if (wp->w_p_list)
 		{
-		    c = (c == ' ') ? lcs_space : lcs_nbsp;
-		    if (area_attr == 0 && search_attr == 0)
+		    if ((c == 160
+			      || (mb_utf8 && (mb_c == 160 || mb_c == 0x202f)))
+			    && lcs_nbsp)
 		    {
-			n_attr = 1;
-			extra_attr = HL_ATTR(HLF_8);
-			saved_attr2 = char_attr; /* save current attr */
+			c = lcs_nbsp;
+			mb_c = c;
+			if (enc_utf8 && utf_char2len(c) > 1)
+			{
+			    mb_utf8 = TRUE;
+			    u8cc[0] = 0;
+			    c = 0xc0;
+			}
+			else
+			    mb_utf8 = FALSE;
 		    }
-		    mb_c = c;
-		    if (enc_utf8 && utf_char2len(c) > 1)
+		    else if (c == ' ' && lcs_space && ptr - line <= trailcol)
 		    {
-			mb_utf8 = TRUE;
-			u8cc[0] = 0;
-			c = 0xc0;
+			c = lcs_space;
+			if (mb_utf8 == FALSE && area_attr == 0 && search_attr == 0)
+			{
+			    n_attr = 1;
+			    extra_attr = HL_ATTR(HLF_8);
+			    saved_attr2 = char_attr; // save current attr
+			}
 		    }
-		    else
-			mb_utf8 = FALSE;
 		}
 
 		if (trailcol != MAXCOL && ptr > line + trailcol && c == ' ')