diff options
Diffstat (limited to 'src/state.rs')
-rw-r--r-- | src/state.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/state.rs b/src/state.rs index 5471bdd..1268574 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,10 +1,13 @@ pub struct State<'a, T: crate::callbacks::Callbacks> { - screen: &'a mut crate::Screen, + screen: &'a mut crate::perform::WrappedScreen, callbacks: &'a mut T, } impl<'a, T: crate::callbacks::Callbacks> State<'a, T> { - pub fn new(screen: &'a mut crate::Screen, callbacks: &'a mut T) -> Self { + pub fn new( + screen: &'a mut crate::perform::WrappedScreen, + callbacks: &'a mut T, + ) -> Self { Self { screen, callbacks } } } @@ -12,17 +15,17 @@ impl<'a, T: crate::callbacks::Callbacks> State<'a, T> { impl<'a, T: crate::callbacks::Callbacks> vte::Perform for State<'a, T> { fn print(&mut self, c: char) { if c == '\u{fffd}' || ('\u{80}'..'\u{a0}').contains(&c) { - self.callbacks.error(self.screen); + self.callbacks.error(&mut self.screen.0); } self.screen.print(c); } fn execute(&mut self, b: u8) { match b { - 7 => self.callbacks.audible_bell(self.screen), + 7 => self.callbacks.audible_bell(&mut self.screen.0), 8..=15 => {} _ => { - self.callbacks.error(self.screen); + self.callbacks.error(&mut self.screen.0); } } self.screen.execute(b); @@ -30,7 +33,7 @@ impl<'a, T: crate::callbacks::Callbacks> vte::Perform for State<'a, T> { fn esc_dispatch(&mut self, intermediates: &[u8], ignore: bool, b: u8) { if intermediates.is_empty() && b == b'g' { - self.callbacks.visual_bell(self.screen); + self.callbacks.visual_bell(&mut self.screen.0); } self.screen.esc_dispatch(intermediates, ignore, b); } @@ -46,14 +49,14 @@ impl<'a, T: crate::callbacks::Callbacks> vte::Perform for State<'a, T> { let mut iter = params.iter(); let op = iter.next().and_then(|x| x.first().copied()); if op == Some(8) { - let (screen_rows, screen_cols) = self.screen.size(); + let (screen_rows, screen_cols) = self.screen.0.size(); let rows = iter.next().map_or(screen_rows, |x| { *x.first().unwrap_or(&screen_rows) }); let cols = iter.next().map_or(screen_cols, |x| { *x.first().unwrap_or(&screen_cols) }); - self.callbacks.resize(self.screen, (rows, cols)); + self.callbacks.resize(&mut self.screen.0, (rows, cols)); } } self.screen.csi_dispatch(params, intermediates, ignore, c); |