Don't send zero-width characters to ncurses
This commit is contained in:
		
							parent
							
								
									b352f5965b
								
							
						
					
					
						commit
						88e2197a8f
					
				
							
								
								
									
										15
									
								
								ui.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								ui.c
									
									
									
									
									
								
							@ -563,6 +563,19 @@ static int wordWidth(const char *str) {
 | 
				
			|||||||
	return width;
 | 
						return width;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// XXX: ncurses likes to render zero-width characters as spaces...
 | 
				
			||||||
 | 
					static int waddnstrnzw(WINDOW *win, const char *str, int len) {
 | 
				
			||||||
 | 
						wchar_t wc;
 | 
				
			||||||
 | 
						while (len) {
 | 
				
			||||||
 | 
							int n = mbtowc(&wc, str, len);
 | 
				
			||||||
 | 
							if (n < 1) return waddnstr(win, str, len);
 | 
				
			||||||
 | 
							if (wcwidth(wc)) waddnstr(win, str, n);
 | 
				
			||||||
 | 
							str += n;
 | 
				
			||||||
 | 
							len -= n;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int wordWrap(WINDOW *win, const char *str) {
 | 
					static int wordWrap(WINDOW *win, const char *str) {
 | 
				
			||||||
	int y, x, width;
 | 
						int y, x, width;
 | 
				
			||||||
	getmaxyx(win, y, width);
 | 
						getmaxyx(win, y, width);
 | 
				
			||||||
@ -601,7 +614,7 @@ static int wordWrap(WINDOW *win, const char *str) {
 | 
				
			|||||||
			colorPair(Colors[style.fg], Colors[style.bg]),
 | 
								colorPair(Colors[style.fg], Colors[style.bg]),
 | 
				
			||||||
			NULL
 | 
								NULL
 | 
				
			||||||
		);
 | 
							);
 | 
				
			||||||
		waddnstr(win, str, len);
 | 
							waddnstrnzw(win, str, len);
 | 
				
			||||||
		str += len;
 | 
							str += len;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return lines;
 | 
						return lines;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user