fix weird alignments in selections

This commit is contained in:
🪞👃🪞 2025-01-27 21:37:24 +01:00
parent 863c028047
commit 29f09a2556
2 changed files with 9 additions and 8 deletions

View file

@ -241,7 +241,7 @@ atom_command!(TrackCommand: |app: Tek| {
command!(|self: TrackCommand, app: Tek|match self {
Self::Add => {
use Selection::*;
let index = app.track_add(None, None, &[], &[])?.0 + 1;
let index = app.track_add(None, None, &[], &[])?.0;
app.selected = match app.selected {
Track(t) => Track(index),
Clip(t, s) => Clip(index, s),
@ -296,7 +296,7 @@ atom_command!(SceneCommand: |app: Tek| {
command!(|self: SceneCommand, app: Tek|match self {
Self::Add => {
use Selection::*;
let index = app.scene_add(None, None)?.0 + 1;
let index = app.scene_add(None, None)?.0;
app.selected = match app.selected {
Scene(s) => Scene(index),
Clip(t, s) => Clip(t, index),

View file

@ -18,6 +18,7 @@ impl Tek {
data})}
pub fn view_scenes (&self) -> impl Content<TuiOut> + use<'_> {
let w_full = self.w();
let w = self.w_tracks_area();
let h = self.h_tracks_area();
let editing = self.is_editing();
let selected_track = self.selected().track();
@ -29,8 +30,8 @@ impl Tek {
let scene_clips = self.per_track(move|t, track|Map::new(
move||self.scenes_with_track_colors(editing, h, t),
move|(s, scene, y1, y2, prev): SceneColor, _|self.view_scene_clip(
(1 + y2 - y1) as u16, y1 as u16,
scene, prev, s, t, editing, selected_track == Some(t+1), selected_scene)));
w, (1 + y2 - y1) as u16, y1 as u16,
scene, prev, s, t, editing, selected_track == Some(t), selected_scene)));
Tui::bg(Black, self.row_top(self.w_tracks_area(), h, scene_names, scene_clips, ())) }
fn scenes_with_colors (&self, editing: bool, h: u16) -> impl ScenesColors<'_> {
self.scenes_sizes(editing, 2, 15).map_while(
@ -49,7 +50,7 @@ impl Tek {
let fg = scene.color.lightest.rgb;
let name = Some(scene.name.clone());
let cell = self.view_scene_cell(true, s, &bg, prev, name, "", fg);
Fixed::x(width, map_south(offset, height, Fixed::y(height, cell))) }
map_south(offset, height, Fixed::y(height, cell)) }
fn scenes_with_track_colors (&self, editing: bool, h: u16, t: usize) -> impl ScenesColors<'_> {
self.scenes_sizes(editing, 2, 15).map_while(
move|(s, scene, y1, y2)|if y2 as u16 > h {
@ -62,7 +63,7 @@ impl Tek {
.unwrap_or(ItemPalette::G[32]))
})) }) }
fn view_scene_clip (
&self, height: u16, offset: u16,
&self, width: u16, height: u16, offset: u16,
scene: &Scene, prev: Option<ItemPalette>, s: usize, t: usize,
editing: bool, same_track: bool, selected_scene: Option<usize>
) -> impl Content<TuiOut> + use<'_> {
@ -87,8 +88,8 @@ impl Tek {
fg: Color,
) -> impl Content<TuiOut> + use<'a> {
let selected_scene = self.selected().scene();
let selected = same_track && selected_scene == Some(scene+1);
let neighbor = same_track && selected_scene == Some(scene);
let selected = same_track && selected_scene == Some(scene);
let neighbor = same_track && scene > 0 && selected_scene == Some(scene - 1);
let is_last = scene == self.scenes.len().saturating_sub(1);
let colors = Self::colors(color, prev, selected, neighbor, is_last);
let content = Fill::x(Align::w(Tui::fg(fg, Tui::bold(true, Bsp::e(icon, name)))));