aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-22 15:38:00 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-22 15:38:00 -0500
commit7ec31cd46f8fa08747ef27d4a143881b662259c0 (patch)
treeb1a1f11e3e7878bcae40ba7d36da5078d6ebd0b2 /teleterm-web
parent6d4330fd09f81e042f5fa81566567ca0234ae3eb (diff)
downloadteleterm-7ec31cd46f8fa08747ef27d4a143881b662259c0.tar.gz
teleterm-7ec31cd46f8fa08747ef27d4a143881b662259c0.zip
also draw the cursor
Diffstat (limited to 'teleterm-web')
-rw-r--r--teleterm-web/src/views/terminal.rs18
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);