From 6eb634a2b83a8a401973ec9e52c7c7ffb5b9fe84 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Wed, 13 Dec 2017 18:24:12 +0100 Subject: [PATCH] Add box cursor to unfocused underline and beam Because some people have requested this change, the beam and underline cursors now also transform into an empty box when the terminal loses focus. Like this there is one unique symbol to indicate that a terminal is not currently focused. --- font/src/lib.rs | 2 +- src/term/mod.rs | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/font/src/lib.rs b/font/src/lib.rs index 68935e45..ad1f4f80 100644 --- a/font/src/lib.rs +++ b/font/src/lib.rs @@ -255,7 +255,7 @@ pub fn get_beam_cursor_glyph( }); } -// Returns a custom beam cursor character +// Returns a custom box cursor character pub fn get_box_cursor_glyph( ascent: i32, height: i32, diff --git a/src/term/mod.rs b/src/term/mod.rs index da59a037..571686c1 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -136,12 +136,7 @@ impl<'a> RenderableCellsIter<'a> { }.initialize(cursor_style, window_focused) } - fn populate_block_cursor(&mut self, window_focused: bool) { - if !window_focused { - self.populate_cursor(font::BOX_CURSOR_CHAR, ' '); - return; - } - + fn populate_block_cursor(&mut self) { let (text_color, cursor_color) = if self.config.custom_cursor_colors() { ( Color::Named(NamedColor::CursorText), @@ -233,15 +228,20 @@ impl<'a> RenderableCellsIter<'a> { fn initialize(mut self, cursor_style: CursorStyle, window_focused: bool) -> Self { if self.cursor_is_visible() { - match cursor_style { - CursorStyle::Block => { - self.populate_block_cursor(window_focused); - }, - CursorStyle::Beam => { - self.populate_beam_cursor(); - }, - CursorStyle::Underline => { - self.populate_underline_cursor(); + if !window_focused { + // Render the box cursor if the window is not focused + self.populate_cursor(font::BOX_CURSOR_CHAR, ' '); + } else { + match cursor_style { + CursorStyle::Block => { + self.populate_block_cursor(); + }, + CursorStyle::Beam => { + self.populate_beam_cursor(); + }, + CursorStyle::Underline => { + self.populate_underline_cursor(); + } } } } else {