From 7c0a03150623c19b6182d61a0d7772ec8e2e18cd Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Thu, 21 Jul 2022 10:04:12 -0700 Subject: [PATCH] added cursor text back --- crates/terminal/src/connection.rs | 6 ++++-- crates/terminal/src/terminal_element.rs | 13 ++++++------- crates/terminal/src/tests/terminal_test_context.rs | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/crates/terminal/src/connection.rs b/crates/terminal/src/connection.rs index 48160cd8776c97707f17b4a72f7fa77be0451bcc..f7407959f69310aaaaa5f5cf1734b38d4567822f 100644 --- a/crates/terminal/src/connection.rs +++ b/crates/terminal/src/connection.rs @@ -366,7 +366,7 @@ impl Terminal { pub fn render_lock(&self, new_size: Option, f: F) -> T where - F: FnOnce(RenderableContent) -> T, + F: FnOnce(RenderableContent, char) -> T, { if let Some(new_size) = new_size { self.pty_tx.0.send(Msg::Resize(new_size.into())).ok(); //Give the PTY a chance to react to the new size @@ -380,7 +380,9 @@ impl Terminal { } let content = term.renderable_content(); - f(content) + let cursor_text = term.grid()[content.cursor.point].c; + + f(content, cursor_text) } pub fn get_display_offset(&self) -> usize { diff --git a/crates/terminal/src/terminal_element.rs b/crates/terminal/src/terminal_element.rs index 3383359f5c8063564d6e08128925ceaaace22838..ea547a404f4974be80adf5dabe49ba20877f27a1 100644 --- a/crates/terminal/src/terminal_element.rs +++ b/crates/terminal/src/terminal_element.rs @@ -333,7 +333,7 @@ impl Element for TerminalEl { let terminal = self.connection.upgrade(cx).unwrap().read(cx); let (cursor, cells, rects, highlights) = - terminal.render_lock(Some(layout.size.clone()), |content| { + terminal.render_lock(Some(layout.size.clone()), |content, cursor_text| { let (cells, rects, highlights) = layout_grid( content.display_iter, &layout.text_style, @@ -345,7 +345,7 @@ impl Element for TerminalEl { //Layout cursor let cursor = layout_cursor( - // grid, + cursor_text, cx.text_layout_cache, &layout, content.cursor.point, @@ -522,14 +522,14 @@ impl Element for TerminalEl { ///TODO: Fix cursor rendering with alacritty fork fn layout_cursor( - // grid: &Grid, + cursor_text: char, text_layout_cache: &TextLayoutCache, tcx: &TerminalLayoutData, cursor_point: Point, display_offset: usize, constraint: SizeConstraint, ) -> Option { - let cursor_text = layout_cursor_text(/*grid,*/ cursor_point, text_layout_cache, tcx); + let cursor_text = layout_cursor_text(cursor_text, cursor_point, text_layout_cache, tcx); get_cursor_shape( cursor_point.line.0 as usize, cursor_point.column.0 as usize, @@ -558,13 +558,12 @@ fn layout_cursor( } fn layout_cursor_text( - // grid: &Grid, + cursor_text: char, _cursor_point: Point, text_layout_cache: &TextLayoutCache, tcx: &TerminalLayoutData, ) -> Line { - let cursor_text = " "; //grid[cursor_point.line][cursor_point.column].c.to_string(); - + let cursor_text = cursor_text.to_string(); text_layout_cache.layout_str( &cursor_text, tcx.text_style.font_size, diff --git a/crates/terminal/src/tests/terminal_test_context.rs b/crates/terminal/src/tests/terminal_test_context.rs index 429d397d1f1a1cabc5186569f89d1eade082cd6e..f4678045d45993c24b0f0b714acdf7139e5b95a4 100644 --- a/crates/terminal/src/tests/terminal_test_context.rs +++ b/crates/terminal/src/tests/terminal_test_context.rs @@ -57,7 +57,7 @@ impl<'a> TerminalTestContext<'a> { } fn grid_as_str(connection: &Terminal) -> String { - connection.render_lock(None, |content| { + connection.render_lock(None, |content, _| { let lines = content.display_iter.group_by(|i| i.point.line.0); lines .into_iter()