chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
terminal/screen: add cursor rendering
[elogind.git]
/
src
/
libsystemd-terminal
/
term-screen.c
diff --git
a/src/libsystemd-terminal/term-screen.c
b/src/libsystemd-terminal/term-screen.c
index 2c881ca8b1c6e832b294f135f8bbb0ec08139993..ccfb9a450c65e7581e198a6749092159f214ace5 100644
(file)
--- a/
src/libsystemd-terminal/term-screen.c
+++ b/
src/libsystemd-terminal/term-screen.c
@@
-4246,6
+4246,8
@@
int term_screen_draw(term_screen *screen,
line_age = MAX(line->age, page->age);
for (i = 0; i < page->width; ++i) {
line_age = MAX(line->age, page->age);
for (i = 0; i < page->width; ++i) {
+ term_attr attr;
+
cell = &line->cells[i];
cell_age = MAX(cell->age, line_age);
cell = &line->cells[i];
cell_age = MAX(cell->age, line_age);
@@
-4259,11
+4261,16
@@
int term_screen_draw(term_screen *screen,
* renderers can assume ch_width is set properpy. */
cw = MAX(cell->cwidth, 1U);
* renderers can assume ch_width is set properpy. */
cw = MAX(cell->cwidth, 1U);
+ attr = cell->attr;
+ if (i == screen->cursor_x && j == screen->cursor_y &&
+ !(screen->flags & TERM_FLAG_HIDE_CURSOR))
+ attr.inverse ^= 1;
+
r = draw_fn(screen,
userdata,
i,
j,
r = draw_fn(screen,
userdata,
i,
j,
- &
cell->
attr,
+ &attr,
ch_str,
ch_n,
cw);
ch_str,
ch_n,
cw);