From ddb3750c8ba1f22ab6d96d2ef929e65dc86534df Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 9 Feb 2017 10:09:14 +0000 Subject: [PATCH] Combining characters need a full flush. --- screen-write.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/screen-write.c b/screen-write.c index 43d12941..f630e0c8 100644 --- a/screen-write.c +++ b/screen-write.c @@ -1153,11 +1153,9 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc) return; ctx->cells++; - /* Flush any existing scrolling. */ - screen_write_collect_flush(ctx, 1); - /* If the width is zero, combine onto the previous character. */ if (width == 0) { + screen_write_collect_flush(ctx, 0); if ((gc = screen_write_combine(ctx, &gc->data, &xx)) != 0) { screen_write_cursormove(ctx, xx, s->cy); screen_write_initctx(ctx, &ttyctx); @@ -1167,6 +1165,9 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc) return; } + /* Flush any existing scrolling. */ + screen_write_collect_flush(ctx, 1); + /* If this character doesn't fit, ignore it. */ if ((~s->mode & MODE_WRAP) && width > 1 &&