summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mode-tree.c4
-rw-r--r--screen-write.c5
2 files changed, 5 insertions, 4 deletions
diff --git a/mode-tree.c b/mode-tree.c
index 2e4b9072..eb18bdf7 100644
--- a/mode-tree.c
+++ b/mode-tree.c
@@ -582,10 +582,10 @@ mode_tree_draw(struct mode_tree_data *mtd)
}
if (i != mtd->current) {
- screen_write_nputs(&ctx, w, &gc0, "%s", text);
+ screen_write_cnputs(&ctx, w, &gc0, "%s", text);
screen_write_clearendofline(&ctx, 8);
} else {
- screen_write_nputs(&ctx, w, &gc, "%s", text);
+ screen_write_cnputs(&ctx, w, &gc, "%s", text);
screen_write_clearendofline(&ctx, gc.bg);
}
free(text);
diff --git a/screen-write.c b/screen-write.c
index 00994e48..c65ae688 100644
--- a/screen-write.c
+++ b/screen-write.c
@@ -350,7 +350,6 @@ screen_write_cnputs(struct screen_write_ctx *ctx, ssize_t maxlen,
ptr = last + 1;
continue;
}
-
if (*ptr > 0x7f && utf8_open(ud, *ptr) == UTF8_MORE) {
ptr++;
@@ -376,7 +375,9 @@ screen_write_cnputs(struct screen_write_ctx *ctx, ssize_t maxlen,
if (maxlen > 0 && size + 1 > (size_t)maxlen)
break;
- if (*ptr > 0x1f && *ptr < 0x7f) {
+ if (*ptr == '\001')
+ gc.attr ^= GRID_ATTR_CHARSET;
+ else if (*ptr > 0x1f && *ptr < 0x7f) {
size++;
screen_write_putc(ctx, &gc, *ptr);
}