fix focus fallthrough in transport

This commit is contained in:
🪞👃🪞 2024-10-10 08:54:15 +03:00
parent 47b10d2275
commit 8aab3f4486

View file

@ -1,5 +1,12 @@
use crate::*;
impl TransportToolbar<Tui> {
fn handle_play_pause (&mut self, from: &TuiInput) -> Perhaps<bool> {
match from.event() {
key!(KeyCode::Enter) => self.toggle_play().map(|_|())?,
_ => return Ok(None)
}
Ok(Some(true))
}
fn handle_bpm (&mut self, from: &TuiInput) -> Perhaps<bool> {
match from.event() {
key!(KeyCode::Char(',')) => { self.bpm -= 1.0; },
@ -33,13 +40,10 @@ impl Handle<Tui> for TransportToolbar<Tui> {
key!(KeyCode::Left) => { self.focus.prev(); },
key!(KeyCode::Right) => { self.focus.next(); },
_ => match self.focus {
TransportToolbarFocus::PlayPause => match from.event() {
key!(KeyCode::Enter) => self.toggle_play().map(|_|())?,
_ => return Ok(None)
},
TransportToolbarFocus::Bpm => self.handle_bpm(from).map(|_|())?,
TransportToolbarFocus::Quant => self.handle_quant(from).map(|_|())?,
TransportToolbarFocus::Sync => self.handle_sync(from).map(|_|())?,
TransportToolbarFocus::PlayPause => return self.handle_play_pause(from),
TransportToolbarFocus::Bpm => return self.handle_bpm(from),
TransportToolbarFocus::Quant => return self.handle_quant(from),
TransportToolbarFocus::Sync => return self.handle_sync(from),
TransportToolbarFocus::Clock => {/*todo*/},
}
}