diff --git a/tek/src/lib.rs b/tek/src/lib.rs index 8a12e0b1..5db4fd05 100644 --- a/tek/src/lib.rs +++ b/tek/src/lib.rs @@ -510,10 +510,11 @@ impl Tek { } else { ("⏹ ".to_string(), TuiTheme::g(64), TuiTheme::g(32)) }; - let selected = selected_scene == Some(s) && selected_track == Some(t); - let active = editing && selected; - let label = move||Tui::fg(fg, Push::x(1, Tui::bold(true, name.to_string()))); - let neighbor = selected_track == Some(t) && selected_scene.map(|s|s+1) == Some(s); + let same_track = selected_track == Some(t+1); + let selected = same_track && Some(s+1) == selected_scene; + let neighbor = same_track && Some(s) == selected_scene; + let active = editing && selected; + let label = move||Tui::fg(fg, Push::x(1, Tui::bold(true, name.to_string()))); map_south(y1 as u16, h, Push::y(1, Fixed::y(h, Either::new( active, Thunk::new(||Bsp::a( @@ -559,13 +560,6 @@ impl Tek { } Ok(()) } - fn button (&self, key: String, label: String) -> impl Content { - let compact = !self.is_editing(); - Tui::bold(true, Bsp::e( - Margin::x(1, Tui::fg_bg(TuiTheme::g(0), TuiTheme::orange(), key)), - When::new(compact, Margin::x(1, Tui::fg_bg(TuiTheme::g(255), TuiTheme::g(96), label))), - )) - } fn input_header <'a> (&'a self) -> BoxThunk<'a, TuiOut> { let fg = TuiTheme::g(224); let bg = TuiTheme::g(64); @@ -585,11 +579,24 @@ impl Tek { ))).boxed()).into() } fn track_header <'a> (&'a self) -> BoxThunk<'a, TuiOut> { - (||Tui::bg(TuiTheme::g(32), Bsp::s( - Fill::x(Align::w(self.button(" C-a ".to_string(), format!(" add scene ({})", self.scenes().len())))), - Fill::x(Align::w(self.button(" C-t ".to_string(), format!(" add track ({})", self.tracks().len())))), + let add_scene = ||self.button(" C-a ".to_string(), format!(" add scene ({}/{})", + self.selected.scene().unwrap_or(0), + self.scenes().len())); + let add_track = ||self.button(" C-t ".to_string(), format!(" add track ({}/{})", + self.selected.track().unwrap_or(0), + self.tracks().len())); + (move||Tui::bg(TuiTheme::g(32), Bsp::s( + Fill::x(Align::w(add_scene())), + Fill::x(Align::w(add_track())), )).boxed()).into() } + fn button (&self, key: String, label: String) -> impl Content { + let compact = !self.is_editing(); + Tui::bold(true, Bsp::e( + Margin::x(1, Tui::fg_bg(TuiTheme::g(0), TuiTheme::orange(), key)), + When::new(compact, Margin::x(1, Tui::fg_bg(TuiTheme::g(255), TuiTheme::g(96), label))), + )) + } } const KEYS_APP: &str = include_str!("keys.edn"); const KEYS_CLIP: &str = include_str!("keys_clip.edn"); @@ -901,7 +908,7 @@ trait HasTracks: HasSelection + HasClock + HasJack + HasEditor + Send + Sync { let color = track.color; let fg = color.lightest.rgb; let bg = color.base.rgb; - let active = self.selected().track() == Some(i); + let active = self.selected().track() == Some(i + 1); let bfg = if active { Color::Rgb(255,255,255) } else { Color::Rgb(0,0,0) }; let border = Style::default().fg(bfg).bg(bg); Tui::bg(bg, map_east(x1 as u16, (x2 - x1) as u16, @@ -1069,7 +1076,7 @@ trait HasScenes: HasSelection + HasEditor + Send + Sync { let h = (1 + y2 - y1) as u16; let name = format!("🭬{}", &scene.name); let color = scene.color; - let active = selected == Some(i); + let active = selected == Some(i + 1); let mid = if active { color.light } else { color.base }; let top = Some(last_color.read().unwrap().base.rgb); let cell = phat_sel_3(