Reset combine flag only if text is actually processed.
authornicm <nicm@openbsd.org>
Thu, 14 Sep 2023 13:01:35 +0000 (13:01 +0000)
committernicm <nicm@openbsd.org>
Thu, 14 Sep 2023 13:01:35 +0000 (13:01 +0000)
usr.bin/tmux/screen-write.c

index 72c8f3b..96a4916 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: screen-write.c,v 1.220 2023/09/01 16:01:54 nicm Exp $ */
+/* $OpenBSD: screen-write.c,v 1.221 2023/09/14 13:01:35 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1742,6 +1742,7 @@ screen_write_collect_end(struct screen_write_ctx *ctx)
 
        if (ci->used == 0)
                return;
+       ctx->flags &= ~SCREEN_WRITE_COMBINE;
 
        before = screen_write_collect_trim(ctx, s->cy, s->cx, ci->used,
            &wrapped);
@@ -1792,8 +1793,6 @@ screen_write_collect_add(struct screen_write_ctx *ctx,
        u_int                            sx = screen_size_x(s);
        int                              collect;
 
-       ctx->flags &= ~SCREEN_WRITE_COMBINE;
-
        /*
         * Don't need to check that the attributes and whatnot are still the
         * same - input_parse will end the collection when anything that isn't
@@ -1873,7 +1872,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
                screen_write_collect_flush(ctx, 0, __func__);
                gc = screen_write_combine(ctx, combine, &xx, &cx);
                if (gc != NULL) {
-                       cy = s->cy;
+                       cx = s->cx; cy = s->cy;
                        screen_write_set_cursor(ctx, xx, s->cy);
                        screen_write_initctx(ctx, &ttyctx, 0);
                        ttyctx.cell = gc;