diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-22 15:38:00 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-22 15:38:00 -0500 |
commit | 7ec31cd46f8fa08747ef27d4a143881b662259c0 (patch) | |
tree | b1a1f11e3e7878bcae40ba7d36da5078d6ebd0b2 /teleterm-web | |
parent | 6d4330fd09f81e042f5fa81566567ca0234ae3eb (diff) | |
download | teleterm-7ec31cd46f8fa08747ef27d4a143881b662259c0.tar.gz teleterm-7ec31cd46f8fa08747ef27d4a143881b662259c0.zip |
also draw the cursor
Diffstat (limited to 'teleterm-web')
-rw-r--r-- | teleterm-web/src/views/terminal.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/teleterm-web/src/views/terminal.rs b/teleterm-web/src/views/terminal.rs index 1cfb8ab..a8a0ba0 100644 --- a/teleterm-web/src/views/terminal.rs +++ b/teleterm-web/src/views/terminal.rs @@ -8,6 +8,7 @@ pub(crate) fn render(model: &crate::model::Model) -> Node<crate::Msg> { return seed::empty![]; }; let (rows, cols) = screen.size(); + let (cursor_row, cursor_col) = screen.cursor_position(); let mut grid = vec![]; for row_idx in 0..rows { @@ -20,7 +21,12 @@ pub(crate) fn render(model: &crate::model::Model) -> Node<crate::Msg> { } row.push(seed::td![ seed::attrs! { At::Class => "cell" }, - style_for_cell(cell), + style_for_cell( + cell, + cursor_row == row_idx + && cursor_col == col_idx + && !screen.hide_cursor() + ), contents ]) } @@ -30,10 +36,16 @@ pub(crate) fn render(model: &crate::model::Model) -> Node<crate::Msg> { seed::table![seed::attrs! { At::Class => "grid" }, grid] } -fn style_for_cell(cell: &vt100::Cell) -> seed::dom_types::Style { +fn style_for_cell( + cell: &vt100::Cell, + is_cursor: bool, +) -> seed::dom_types::Style { let mut fgcolor = cell.fgcolor(); let mut bgcolor = cell.bgcolor(); - if cell.inverse() { + if is_cursor { + fgcolor = vt100::Color::Rgb(0, 0, 0); + bgcolor = vt100::Color::Rgb(0, 0xff, 0); + } else if cell.inverse() { if fgcolor == bgcolor { fgcolor = vt100::Color::Rgb(0, 0, 0); bgcolor = vt100::Color::Rgb(0xd3, 0xd3, 0xd3); |