diff --git a/crates/app/src/view.rs b/crates/app/src/view.rs index dc253604..f4d8f8e0 100644 --- a/crates/app/src/view.rs +++ b/crates/app/src/view.rs @@ -42,20 +42,22 @@ impl Tek { } fn view_modal_help (&self) -> impl Content + use<'_> { - let bindings = ||self.keys.layers.iter().flat_map(|a|a.1) + let bindings = ||self.keys.layers.iter() + .filter_map(|a|(a.0)(self).then_some(a.1)) + .flat_map(|a|a) .filter_map(|x|if let Value::Exp(_, iter)=x.value{ Some(iter) } else { None }); let binding = |mut binding: TokenIter, _|Bsp::e( - Tui::bold(true, Tui::fg(Color::Rgb(255,192,0), if let Some(Token { + Fixed::x(15, Align::w(Tui::bold(true, Tui::fg(Color::Rgb(255,192,0), if let Some(Token { value: Value::Sym(key), .. }) = binding.next() { Some(key.to_string()) } else { None - })), + })))), Bsp::e(" ", Tui::fg(Color::Rgb(255,255,255), if let Some(Token { value: Value::Key(command), .. }) = binding.next() { @@ -64,8 +66,7 @@ impl Tek { None })), ); - let layer = Map::south(1, bindings, binding); - Bsp::s(Tui::bold(true, "Help"), Bsp::s("", layer)) + Bsp::s(Tui::bold(true, "Help"), Bsp::s("", Map::south(1, bindings, binding))) } pub fn view_status (&self) -> impl Content + use<'_> { diff --git a/crates/cli/tek.rs b/crates/cli/tek.rs index d654a888..0cebdf0d 100644 --- a/crates/cli/tek.rs +++ b/crates/cli/tek.rs @@ -140,13 +140,13 @@ impl Cli { .layer(SourceIter(include_str!("../../config/keys_global.edn")).into()) .layer_if(|state: &Tek|state.is_editing(), SourceIter(include_str!("../../config/keys_editor.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_clip(), + .layer_if(|state: &Tek|state.selected.is_clip()&&!state.is_editing(), SourceIter(include_str!("../../config/keys_clip.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_track(), + .layer_if(|state: &Tek|state.selected.is_track()&&!state.is_editing(), SourceIter(include_str!("../../config/keys_track.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_scene(), + .layer_if(|state: &Tek|state.selected.is_scene()&&!state.is_editing(), SourceIter(include_str!("../../config/keys_scene.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_mix(), + .layer_if(|state: &Tek|state.selected.is_mix()&&!state.is_editing(), SourceIter(include_str!("../../config/keys_mix.edn")).into()) .layer(SourceIter(include_str!("../../config/keys_clock.edn")).into()) .layer(SourceIter(include_str!("../../config/keys_arranger.edn")).into()),