summarylogtreecommitdiffstats
path: root/addon-underline.patch
blob: a6a78767f58bf9c1182ce6583db86d403d272b08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/src/tsm/tsm-render.c b/src/tsm/tsm-render.c
index cb6c7d7..dcd4d69 100644
--- a/src/tsm/tsm-render.c
+++ b/src/tsm/tsm-render.c
@@ -52,6 +52,7 @@ tsm_age_t tsm_screen_draw(struct tsm_screen *con, tsm_screen_draw_cb draw_cb,
 	struct tsm_screen_attr attr;
 	int ret, warned = 0;
 	const uint32_t *ch;
+	uint32_t id;
 	size_t len;
 	bool in_sel = false, sel_start = false, sel_end = false;
 	bool was_sel = false;
@@ -161,10 +162,15 @@ tsm_age_t tsm_screen_draw(struct tsm_screen *con, tsm_screen_draw_cb draw_cb,
 					age = con->age;
 			}
 
+			if (attr.underline)
+				id = cell->ch | (TSM_UCS4_MAX+1);
+			else
+				id = cell->ch;
+
 			ch = tsm_symbol_get(con->sym_table, &cell->ch, &len);
-			if (cell->ch == ' ' || cell->ch == 0)
+			if (cell->ch == 0 || (cell->ch == ' ' && !attr.underline))
 				len = 0;
-			ret = draw_cb(con, cell->ch, ch, len, cell->width,
+			ret = draw_cb(con, id, ch, len, cell->width,
 				      j, i, &attr, age, data);
 			if (ret && warned++ < 3) {
 				llog_debug(con,