aboutsummaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
authorBrooks J Rady <b.j.rady@gmail.com>2021-03-25 14:24:11 +0000
committerBrooks J Rady <b.j.rady@gmail.com>2021-03-25 14:24:11 +0000
commitf2f77583848bce219fc098508fffde30fa366b89 (patch)
tree391ac6129ddcc6ea0fe760dd206abaa97bde3b35 /src/client
parentRemove a dead input enum variant (diff)
parentfix(render): various rendering issues (#238) (diff)
downloadsl0ppij-f2f77583848bce219fc098508fffde30fa366b89.tar.gz
sl0ppij-f2f77583848bce219fc098508fffde30fa366b89.tar.xz
sl0ppij-f2f77583848bce219fc098508fffde30fa366b89.zip
Merge in changes from main and fix clippy lints
Diffstat (limited to 'src/client')
-rw-r--r--src/client/boundaries.rs128
-rw-r--r--src/client/panes/terminal_pane.rs9
-rw-r--r--src/client/tab.rs13
3 files changed, 130 insertions, 20 deletions
diff --git a/src/client/boundaries.rs b/src/client/boundaries.rs
index 67733c12..e498da89 100644
--- a/src/client/boundaries.rs
+++ b/src/client/boundaries.rs
@@ -1,5 +1,7 @@
use crate::tab::Pane;
+use ansi_term::Colour;
use std::collections::HashMap;
+use zellij_tile::data::InputMode;
use std::fmt::{Display, Error, Formatter};
@@ -17,12 +19,20 @@ pub mod boundary_type {
pub const CROSS: &str = "┼";
}
+pub mod colors {
+ use ansi_term::Colour::{self, Fixed};
+ pub const WHITE: Colour = Fixed(255);
+ pub const GREEN: Colour = Fixed(154);
+ pub const GRAY: Colour = Fixed(238);
+}
+
pub type BoundaryType = &'static str; // easy way to refer to boundary_type above
#[derive(Clone, Copy, Debug)]
pub struct BoundarySymbol {
boundary_type: BoundaryType,
invisible: bool,
+ color: Option<Colour>,
}
impl BoundarySymbol {
@@ -30,20 +40,27 @@ impl BoundarySymbol {
BoundarySymbol {
boundary_type,
invisible: false,
+ color: Some(colors::GRAY),
}
}
pub fn invisible(mut self) -> Self {
self.invisible = true;
self
}
+ pub fn color(&mut self, color: Option<Colour>) -> Self {
+ self.color = color;
+ *self
+ }
}
impl Display for BoundarySymbol {
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
- if self.invisible {
- write!(f, " ")
- } else {
- write!(f, "{}", self.boundary_type)
+ match self.invisible {
+ true => write!(f, " "),
+ false => match self.color {
+ Some(color) => write!(f, "{}", color.paint(self.boundary_type)),
+ None => write!(f, "{}", self.boundary_type),
+ },
}
}
}
@@ -53,6 +70,10 @@ fn combine_symbols(
next_symbol: BoundarySymbol,
) -> Option<BoundarySymbol> {
let invisible = current_symbol.invisible || next_symbol.invisible;
+ let color = match (current_symbol.color.is_some(), next_symbol.color.is_some()) {
+ (true, _) => current_symbol.color,
+ _ => next_symbol.color,
+ };
let current_symbol = current_symbol.boundary_type;
let next_symbol = next_symbol.boundary_type;
match (current_symbol, next_symbol) {
@@ -62,6 +83,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::VERTICAL) => {
@@ -70,6 +92,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::HORIZONTAL) => {
@@ -78,6 +101,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::TOP_LEFT) => {
@@ -86,6 +110,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::BOTTOM_RIGHT) => {
@@ -94,6 +119,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::BOTTOM_LEFT) => {
@@ -102,6 +128,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::VERTICAL_LEFT) => {
@@ -110,6 +137,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::VERTICAL_RIGHT) => {
@@ -118,6 +146,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::HORIZONTAL_DOWN) => {
@@ -126,6 +155,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::HORIZONTAL_UP) => {
@@ -134,6 +164,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_RIGHT, boundary_type::CROSS) => {
@@ -142,6 +173,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::HORIZONTAL) => {
@@ -150,6 +182,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::VERTICAL) => {
@@ -158,6 +191,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::TOP_LEFT) => {
@@ -166,6 +200,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::BOTTOM_RIGHT) => {
@@ -174,6 +209,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::BOTTOM_LEFT) => {
@@ -182,6 +218,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::VERTICAL_LEFT) => {
@@ -190,6 +227,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::VERTICAL_RIGHT) => {
@@ -198,6 +236,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::HORIZONTAL_DOWN) => {
@@ -206,6 +245,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::HORIZONTAL_UP) => {
@@ -214,6 +254,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL, boundary_type::CROSS) => {
@@ -222,6 +263,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::VERTICAL) => {
@@ -230,6 +272,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::TOP_LEFT) => {
@@ -238,6 +281,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::BOTTOM_RIGHT) => {
@@ -246,6 +290,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::BOTTOM_LEFT) => {
@@ -254,6 +299,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::VERTICAL_LEFT) => {
@@ -262,6 +308,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::VERTICAL_RIGHT) => {
@@ -270,6 +317,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::HORIZONTAL_DOWN) => {
@@ -278,6 +326,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::HORIZONTAL_UP) => {
@@ -286,6 +335,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL, boundary_type::CROSS) => {
@@ -294,6 +344,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::TOP_LEFT) => {
@@ -302,6 +353,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::BOTTOM_RIGHT) => {
@@ -310,6 +362,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::BOTTOM_LEFT) => {
@@ -318,6 +371,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::VERTICAL_LEFT) => {
@@ -326,6 +380,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::VERTICAL_RIGHT) => {
@@ -334,6 +389,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::HORIZONTAL_DOWN) => {
@@ -342,6 +398,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::HORIZONTAL_UP) => {
@@ -350,6 +407,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::TOP_LEFT, boundary_type::CROSS) => {
@@ -358,6 +416,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_RIGHT, boundary_type::BOTTOM_RIGHT) => {
@@ -366,6 +425,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_RIGHT, boundary_type::BOTTOM_LEFT) => {
@@ -374,6 +434,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_RIGHT, boundary_type::VERTICAL_LEFT) => {
@@ -382,6 +443,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_RIGHT, boundary_type::VERTICAL_RIGHT) => {
@@ -390,6 +452,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_RIGHT, boundary_type::HORIZONTAL_DOWN) => {
@@ -398,6 +461,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_RIGHT, boundary_type::HORIZONTAL_UP) => {
@@ -406,6 +470,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_RIGHT, boundary_type::CROSS) => {
@@ -414,6 +479,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_LEFT, boundary_type::BOTTOM_LEFT) => {
@@ -422,6 +488,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_LEFT, boundary_type::VERTICAL_LEFT) => {
@@ -430,6 +497,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_LEFT, boundary_type::VERTICAL_RIGHT) => {
@@ -438,6 +506,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_LEFT, boundary_type::HORIZONTAL_DOWN) => {
@@ -446,6 +515,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_LEFT, boundary_type::HORIZONTAL_UP) => {
@@ -454,6 +524,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::BOTTOM_LEFT, boundary_type::CROSS) => {
@@ -462,6 +533,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_LEFT, boundary_type::VERTICAL_LEFT) => {
@@ -470,6 +542,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_LEFT, boundary_type::VERTICAL_RIGHT) => {
@@ -478,6 +551,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_LEFT, boundary_type::HORIZONTAL_DOWN) => {
@@ -486,6 +560,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_LEFT, boundary_type::HORIZONTAL_UP) => {
@@ -494,6 +569,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_LEFT, boundary_type::CROSS) => {
@@ -502,6 +578,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_RIGHT, boundary_type::VERTICAL_RIGHT) => {
@@ -510,6 +587,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_RIGHT, boundary_type::HORIZONTAL_DOWN) => {
@@ -518,6 +596,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_RIGHT, boundary_type::HORIZONTAL_UP) => {
@@ -526,6 +605,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::VERTICAL_RIGHT, boundary_type::CROSS) => {
@@ -534,6 +614,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL_DOWN, boundary_type::HORIZONTAL_DOWN) => {
@@ -542,6 +623,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL_DOWN, boundary_type::HORIZONTAL_UP) => {
@@ -550,6 +632,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL_DOWN, boundary_type::CROSS) => {
@@ -558,6 +641,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL_UP, boundary_type::HORIZONTAL_UP) => {
@@ -566,6 +650,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::HORIZONTAL_UP, boundary_type::CROSS) => {
@@ -574,6 +659,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(boundary_type::CROSS, boundary_type::CROSS) => {
@@ -582,6 +668,7 @@ fn combine_symbols(
Some(BoundarySymbol {
boundary_type,
invisible,
+ color,
})
}
(_, _) => None,
@@ -677,7 +764,14 @@ impl Boundaries {
boundary_characters: HashMap::new(),
}
}
- pub fn add_rect(&mut self, rect: &dyn Pane) {
+ pub fn add_rect(&mut self, rect: &dyn Pane, input_mode: InputMode, color: Option<Colour>) {
+ let color = match color.is_some() {
+ true => match input_mode {
+ InputMode::Normal | InputMode::Locked => Some(colors::GREEN),
+ _ => Some(colors::WHITE),
+ },
+ false => None,
+ };
if rect.x() > 0 {
let boundary_x_coords = rect.x() - 1;
let first_row_coordinates = self.rect_right_boundary_row_start(rect);
@@ -685,11 +779,11 @@ impl Boundaries {
for row in first_row_coordinates..last_row_coordinates {
let coordinates = Coordinates::new(boundary_x_coords, row);
let mut symbol_to_add = if row == first_row_coordinates && row != 0 {
- BoundarySymbol::new(boundary_type::TOP_LEFT)
+ BoundarySymbol::new(boundary_type::TOP_LEFT).color(color)
} else if row == last_row_coordinates - 1 && row != self.rows - 1 {
- BoundarySymbol::new(boundary_type::BOTTOM_LEFT)
+ BoundarySymbol::new(boundary_type::BOTTOM_LEFT).color(color)
} else {
- BoundarySymbol::new(boundary_type::VERTICAL)
+ BoundarySymbol::new(boundary_type::VERTICAL).color(color)
};
if rect.invisible_borders() {
symbol_to_add = symbol_to_add.invisible();
@@ -709,11 +803,11 @@ impl Boundaries {
for col in first_col_coordinates..last_col_coordinates {
let coordinates = Coordinates::new(col, boundary_y_coords);
let mut symbol_to_add = if col == first_col_coordinates && col != 0 {
- BoundarySymbol::new(boundary_type::TOP_LEFT)
+ BoundarySymbol::new(boundary_type::TOP_LEFT).color(color)
} else if col == last_col_coordinates - 1 && col != self.columns - 1 {
- BoundarySymbol::new(boundary_type::TOP_RIGHT)
+ BoundarySymbol::new(boundary_type::TOP_RIGHT).color(color)
} else {
- BoundarySymbol::new(boundary_type::HORIZONTAL)
+ BoundarySymbol::new(boundary_type::HORIZONTAL).color(color)
};
if rect.invisible_borders() {
symbol_to_add = symbol_to_add.invisible();
@@ -734,11 +828,11 @@ impl Boundaries {
for row in first_row_coordinates..last_row_coordinates {
let coordinates = Coordinates::new(boundary_x_coords, row);
let mut symbol_to_add = if row == first_row_coordinates && row != 0 {
- BoundarySymbol::new(boundary_type::TOP_RIGHT)
+ BoundarySymbol::new(boundary_type::TOP_RIGHT).color(color)
} else if row == last_row_coordinates - 1 && row != self.rows - 1 {
- BoundarySymbol::new(boundary_type::BOTTOM_RIGHT)
+ BoundarySymbol::new(boundary_type::BOTTOM_RIGHT).color(color)
} else {
- BoundarySymbol::new(boundary_type::VERTICAL)
+ BoundarySymbol::new(boundary_type::VERTICAL).color(color)
};
if rect.invisible_borders() {
symbol_to_add = symbol_to_add.invisible();
@@ -758,11 +852,11 @@ impl Boundaries {
for col in first_col_coordinates..last_col_coordinates {
let coordinates = Coordinates::new(col, boundary_y_coords);
let mut symbol_to_add = if col == first_col_coordinates && col != 0 {
- BoundarySymbol::new(boundary_type::BOTTOM_LEFT)
+ BoundarySymbol::new(boundary_type::BOTTOM_LEFT).color(color)
} else if col == last_col_coordinates - 1 && col != self.columns - 1 {
- BoundarySymbol::new(boundary_type::BOTTOM_RIGHT)
+ BoundarySymbol::new(boundary_type::BOTTOM_RIGHT).color(color)
} else {
- BoundarySymbol::new(boundary_type::HORIZONTAL)
+ BoundarySymbol::new(boundary_type::HORIZONTAL).color(color)
};
if rect.invisible_borders() {
symbol_to_add = symbol_to_add.invisible();
diff --git a/src/client/panes/terminal_pane.rs b/src/client/panes/terminal_pane.rs
index 9fa70d11..f0b15e50 100644
--- a/src/client/panes/terminal_pane.rs
+++ b/src/client/panes/terminal_pane.rs
@@ -188,7 +188,14 @@ impl Pane for TerminalPane {
self.max_height
}
fn render(&mut self) -> Option<String> {
- if self.should_render || cfg!(test) {
+ // FIXME:
+ // the below conditional is commented out because it causes several bugs:
+ // 1. When panes are resized or tabs are switched the previous contents of the screen stick
+ // around
+ // 2. When there are wide characters in a pane, since we don't yet handle them properly,
+ // the spill over to the pane to the right
+ // if self.should_render || cfg!(test) {
+ if true {
let mut vte_output = String::new();
let buffer_lines = &self.read_buffer_as_lines();
let display_cols = self.get_columns();
diff --git a/src/client/tab.rs b/src/client/tab.rs
index 1a3f411d..b74c2eb7 100644
--- a/src/client/tab.rs
+++ b/src/client/tab.rs
@@ -1,6 +1,7 @@
//! `Tab`s holds multiple panes. It tracks their coordinates (x/y) and size,
//! as well as how they should be resized
+use crate::boundaries::colors;
use crate::common::{input::handler::parse_keys, AppInstruction, SenderWithContext};
use crate::layout::Layout;
use crate::panes::{PaneId, PositionAndSize, TerminalPane};
@@ -14,7 +15,7 @@ use std::{
collections::{BTreeMap, HashSet},
};
use std::{io::Write, sync::mpsc::channel};
-use zellij_tile::data::Event;
+use zellij_tile::data::{Event, InputMode};
const CURSOR_HEIGHT_WIDTH_RATIO: usize = 4; // this is not accurate and kind of a magic number, TODO: look into this
const MIN_TERMINAL_HEIGHT: usize = 2;
@@ -65,6 +66,7 @@ pub struct Tab {
pub send_plugin_instructions: SenderWithContext<PluginInstruction>,
pub send_app_instructions: SenderWithContext<AppInstruction>,
expansion_boundary: Option<PositionAndSize>,
+ pub input_mode: InputMode,
}
// FIXME: Use a struct that has a pane_type enum, to reduce all of the duplication
@@ -181,6 +183,7 @@ impl Tab {
send_app_instructions: SenderWithContext<AppInstruction>,
max_panes: Option<usize>,
pane_id: Option<PaneId>,
+ input_mode: InputMode,
) -> Self {
let panes = if let Some(PaneId::Terminal(pid)) = pane_id {
let new_terminal = TerminalPane::new(pid, *full_screen_ws);
@@ -210,6 +213,7 @@ impl Tab {
send_pty_instructions,
send_plugin_instructions,
expansion_boundary: None,
+ input_mode,
}
}
@@ -636,7 +640,12 @@ impl Tab {
.expect("cannot write to stdout");
for (kind, terminal) in self.panes.iter_mut() {
if !self.panes_to_hide.contains(&terminal.pid()) {
- boundaries.add_rect(terminal.as_ref());
+ match self.active_terminal.unwrap() == terminal.pid() {
+ true => {
+ boundaries.add_rect(terminal.as_ref(), self.input_mode, Some(colors::GREEN))
+ }
+ false => boundaries.add_rect(terminal.as_ref(), self.input_mode, None),
+ }
if let Some(vte_output) = terminal.render() {
let vte_output = if let PaneId::Terminal(_) = kind {
vte_output