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 &&