diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-03 14:02:06 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-03 14:02:06 -0500 |
commit | 759e500c08ec5d5f55c5f5426ec8207fc5bb90d4 (patch) | |
tree | 72c42d5e5857bdc2de39e75bdf05fd6ae24ba9bd | |
parent | 3fb01c1d74debdb4c8fd7395f7a2e0671dfac46b (diff) | |
download | vt100-rust-759e500c08ec5d5f55c5f5426ec8207fc5bb90d4.tar.gz vt100-rust-759e500c08ec5d5f55c5f5426ec8207fc5bb90d4.zip |
actually, i do want to default to resetting everything
the stuff that survives across a reset should be the special case,
handled specially
-rw-r--r-- | src/screen.rs | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/screen.rs b/src/screen.rs index be569b2..c41aeed 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -64,8 +64,7 @@ struct State { } impl State { - fn new(rows: u16, cols: u16) -> Self { - let size = crate::grid::Size { rows, cols }; + fn new(size: crate::grid::Size) -> Self { Self { grid: crate::grid::Grid::new(size), alternate_grid: crate::grid::Grid::new(size), @@ -289,12 +288,15 @@ impl State { // ESC c fn ris(&mut self) { - self.grid = self.new_grid(); - self.alternate_grid = self.new_grid(); - self.attrs = crate::attrs::Attrs::default(); - self.modes = enumset::EnumSet::default(); - self.mouse_protocol_mode = MouseProtocolMode::default(); - self.mouse_protocol_encoding = MouseProtocolEncoding::default(); + let outputs = self.outputs; + let title = self.title.clone(); + let icon_name = self.icon_name.clone(); + + *self = Self::new(self.grid().size()); + + self.outputs = outputs; + self.title = title; + self.icon_name = icon_name; } // ESC g @@ -743,7 +745,7 @@ impl Screen { pub fn new(rows: u16, cols: u16) -> Self { Self { parser: vte::Parser::new(), - state: State::new(rows, cols), + state: State::new(crate::grid::Size { rows, cols }), } } |