From 7ec31cd46f8fa08747ef27d4a143881b662259c0 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 22 Nov 2019 15:38:00 -0500 Subject: also draw the cursor --- teleterm-web/src/views/terminal.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'teleterm-web') 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 { 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 { } 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 { 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); -- cgit v1.2.3-54-g00ecf