mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:44:18 +00:00 
			
		
		
		
	When redrawing a combined UTF-8 characters in its existing position,
need to save and restore the cursor so that the next character goes into the right place.
This commit is contained in:
		@@ -1151,7 +1151,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
 | 
				
			|||||||
	struct grid_cell 	 tmp_gc, now_gc;
 | 
						struct grid_cell 	 tmp_gc, now_gc;
 | 
				
			||||||
	struct tty_ctx		 ttyctx;
 | 
						struct tty_ctx		 ttyctx;
 | 
				
			||||||
	u_int			 sx = screen_size_x(s), sy = screen_size_y(s);
 | 
						u_int			 sx = screen_size_x(s), sy = screen_size_y(s);
 | 
				
			||||||
	u_int		 	 width = gc->data.width, xx, last;
 | 
						u_int		 	 width = gc->data.width, xx, last, cx, cy;
 | 
				
			||||||
	int			 selected, skip = 1;
 | 
						int			 selected, skip = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Ignore padding cells. */
 | 
						/* Ignore padding cells. */
 | 
				
			||||||
@@ -1163,10 +1163,12 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
 | 
				
			|||||||
	if (width == 0) {
 | 
						if (width == 0) {
 | 
				
			||||||
		screen_write_collect_flush(ctx, 0);
 | 
							screen_write_collect_flush(ctx, 0);
 | 
				
			||||||
		if ((gc = screen_write_combine(ctx, &gc->data, &xx)) != 0) {
 | 
							if ((gc = screen_write_combine(ctx, &gc->data, &xx)) != 0) {
 | 
				
			||||||
 | 
								cx = s->cx; cy = s->cy;
 | 
				
			||||||
			screen_write_cursormove(ctx, xx, s->cy);
 | 
								screen_write_cursormove(ctx, xx, s->cy);
 | 
				
			||||||
			screen_write_initctx(ctx, &ttyctx);
 | 
								screen_write_initctx(ctx, &ttyctx);
 | 
				
			||||||
			ttyctx.cell = gc;
 | 
								ttyctx.cell = gc;
 | 
				
			||||||
			tty_write(tty_cmd_cell, &ttyctx);
 | 
								tty_write(tty_cmd_cell, &ttyctx);
 | 
				
			||||||
 | 
								s->cx = cx; s->cy = cy;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user