aboutsummaryrefslogtreecommitdiffstats
path: root/src/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/state.rs')
-rw-r--r--src/state.rs19
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);