clock: fix play/pause

This commit is contained in:
🪞👃🪞 2025-05-09 23:22:28 +03:00
parent 9e8572ae0f
commit 5fa5a875b7
5 changed files with 21 additions and 22 deletions

View file

@ -1,2 +1,2 @@
(@space clock toggle) (@space clock toggle-playback 0)
(@shift-space clock toggle 0) (@shift-space clock toggle-playback 0)

View file

@ -42,33 +42,29 @@ mod config; pub use self::config::*;
mod model; pub use self::model::*; mod model; pub use self::model::*;
mod view; pub use self::view::*; mod view; pub use self::view::*;
#[cfg(test)] #[test] fn test_model () { #[cfg(test)] #[test] fn test_model () -> Usually<()> {
let mut app = App::default(); let mut app = App::default();
let _ = app.clip(); let _ = app.clip();
let _ = app.toggle_loop(); let _ = app.toggle_loop();
} //let _ = app.tracks_add(8, None, &[], &[])?;
//let _ = app.track_add_focus()?;
#[cfg(test)] #[test] fn test_model_scene () {
let mut app = App::default();
let _ = app.scene_longest(); let _ = app.scene_longest();
let _ = app.scene(); let _ = app.scene();
let _ = app.scene_mut(); let _ = app.scene_mut();
let _ = app.scene_add(None, None); let _ = app.scene_add(None, None)?;
app.scene_del(0); let _ = app.scene_add_focus()?;
let scene = app.scene_del(0);
let scene = Scene::default(); let scene = Scene::default();
let _ = scene.pulses(); let _ = scene.pulses();
let _ = scene.is_playing(&[]); let _ = scene.is_playing(&[]);
}
#[cfg(test)] #[test] fn test_view_clock () {
let _ = button_play_pause(true);
let mut app = App::default();
let _ = app.view_transport(); let _ = app.view_transport();
let _ = app.view_status(); let _ = app.view_status();
let _ = app.update_clock(); let _ = app.update_clock();
Ok(())
} }
#[cfg(test)] #[test] fn test_view_layout () { #[cfg(test)] #[test] fn test_view_layout () {
let _ = button_play_pause(true);
let _ = button_2("", "", true); let _ = button_2("", "", true);
let _ = button_2("", "", false); let _ = button_2("", "", false);
let _ = button_3("", "", "", true); let _ = button_3("", "", "", true);

View file

@ -46,13 +46,16 @@ pub trait HasScenes: HasSelection + HasEditor + Send + Sync {
self.scenes().iter().map(|s|s.name.len()).fold(0, usize::max) self.scenes().iter().map(|s|s.name.len()).fold(0, usize::max)
} }
fn scene (&self) -> Option<&Scene> { fn scene (&self) -> Option<&Scene> {
self.selected().scene().and_then(|s|self.scenes().get(s)) self.selected().scene()
.and_then(|s|self.scenes().get(s))
} }
fn scene_mut (&mut self) -> Option<&mut Scene> { fn scene_mut (&mut self) -> Option<&mut Scene> {
self.selected().scene().and_then(|s|self.scenes_mut().get_mut(s)) self.selected().scene()
.and_then(|s|self.scenes_mut().get_mut(s))
} }
fn scene_del (&mut self, index: usize) { fn scene_del (&mut self, index: usize) -> Option<Scene> {
self.selected().scene().and_then(|s|Some(self.scenes_mut().remove(index))); self.selected().scene()
.and_then(|s|Some(self.scenes_mut().remove(index)))
} }
/// Set the color of a scene, returning the previous one. /// Set the color of a scene, returning the previous one.
fn scene_set_color (&mut self, index: usize, color: ItemTheme) -> ItemTheme { fn scene_set_color (&mut self, index: usize, color: ItemTheme) -> ItemTheme {

View file

@ -29,11 +29,11 @@ impl ClockCommand {
state.pause_at(position)?; state.pause_at(position)?;
Ok(None) Ok(None)
} }
fn toggle_playback (state: &mut Clock, position: Option<u32>) -> Perhaps<Self> { fn toggle_playback (state: &mut Clock, position: u32) -> Perhaps<Self> {
if state.is_rolling() { if state.is_rolling() {
state.pause_at(position)?; state.pause_at(Some(position))?;
} else { } else {
state.play_from(position)?; state.play_from(Some(position))?;
} }
Ok(None) Ok(None)
} }

2
deps/tengri vendored

@ -1 +1 @@
Subproject commit 20ccff13de1957c1268c6fec64048d8ae1767fd5 Subproject commit cb8fd26922fd1cfad4ceadeb89e48544531a178e