From 9739d754e72d82248c93e7d54d9b7f0cac669c28 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 5 Mar 2022 13:36:41 -0500 Subject: simplify --- src/shell/history/entry.rs | 8 ++++++-- src/shell/history/pty.rs | 28 +++++++++++++++------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/shell/history/entry.rs b/src/shell/history/entry.rs index 6cad678..ad931dc 100644 --- a/src/shell/history/entry.rs +++ b/src/shell/history/entry.rs @@ -63,7 +63,9 @@ impl Entry { }, ); - vt.bell(out, focused); + if vt.bell(focused) { + out.write(b"\x07"); + } Self::set_bgcolor(out, idx, focused); out.set_fgcolor(textmode::color::YELLOW); @@ -206,7 +208,9 @@ impl Entry { pub fn render_fullscreen(&self, out: &mut impl textmode::Textmode) { self.pty.with_vt_mut(|vt| { out.write(&vt.screen().state_formatted()); - vt.bell(out, true); + if vt.bell(true) { + out.write(b"\x07"); + } out.reset_attributes(); }); } diff --git a/src/shell/history/pty.rs b/src/shell/history/pty.rs index 49ec4c9..cef4ca9 100644 --- a/src/shell/history/pty.rs +++ b/src/shell/history/pty.rs @@ -116,8 +116,8 @@ impl Pty { pub struct Vt { vt: vt100::Parser, - audible_bell_state: usize, - audible_bell: bool, + bell_state: usize, + bell: bool, real_bell_pending: bool, } @@ -125,8 +125,8 @@ impl Vt { pub fn new(size: (u16, u16)) -> Self { Self { vt: vt100::Parser::new(size.0, size.1, 0), - audible_bell_state: 0, - audible_bell: false, + bell_state: 0, + bell: false, real_bell_pending: false, } } @@ -135,11 +135,11 @@ impl Vt { self.vt.process(bytes); let screen = self.vt.screen(); - let new_audible_bell_state = screen.audible_bell_count(); - if new_audible_bell_state != self.audible_bell_state { - self.audible_bell = true; + let new_bell_state = screen.audible_bell_count(); + if new_bell_state != self.bell_state { + self.bell = true; self.real_bell_pending = true; - self.audible_bell_state = new_audible_bell_state; + self.bell_state = new_bell_state; } } @@ -152,19 +152,21 @@ impl Vt { } pub fn is_bell(&self) -> bool { - self.audible_bell + self.bell } - pub fn bell(&mut self, out: &mut impl textmode::Textmode, focused: bool) { + pub fn bell(&mut self, focused: bool) -> bool { + let mut should = false; if self.real_bell_pending { - if self.audible_bell { - out.write(b"\x07"); + if self.bell { + should = true; } self.real_bell_pending = false; } if focused { - self.audible_bell = false; + self.bell = false; } + should } pub fn binary(&self) -> bool { -- cgit v1.2.3