This commit is contained in:
2026-01-29 12:17:09 +01:00
parent 495bfb3bdc
commit 4d22bd5d2b
3 changed files with 46 additions and 13 deletions

View File

@@ -538,6 +538,7 @@ impl SequencerState {
});
}
self.audio_state.pending_starts.clear();
self.audio_state.prev_beat = -1.0;
self.buf_audio_commands.clear();
TickOutput {
audio_commands: std::mem::take(&mut self.buf_audio_commands),

View File

@@ -893,7 +893,11 @@ fn handle_patterns_page(ctx: &mut InputContext, key: KeyEvent) -> InputResult {
}
}
KeyCode::Enter => ctx.dispatch(AppCommand::PatternsEnter),
KeyCode::Char(' ') => ctx.dispatch(AppCommand::PatternsTogglePlay),
KeyCode::Char(' ') => {
if ctx.app.patterns_nav.column == PatternsColumn::Patterns {
ctx.dispatch(AppCommand::PatternsTogglePlay);
}
}
KeyCode::Char('c') if !ctrl => ctx.dispatch(AppCommand::CommitStagedChanges),
KeyCode::Char('q') => {
ctx.dispatch(AppCommand::OpenModal(Modal::ConfirmQuit {

View File

@@ -158,7 +158,7 @@ pub fn render(frame: &mut Frame, app: &App, link: &LinkState, snapshot: &Sequenc
};
let [header_area, _padding, body_area, _bottom_padding, footer_area] = Layout::vertical([
Constraint::Length(1),
Constraint::Length(header_height(padded.width)),
Constraint::Length(1),
Constraint::Fill(1),
Constraint::Length(1),
@@ -225,6 +225,10 @@ pub fn render(frame: &mut Frame, app: &App, link: &LinkState, snapshot: &Sequenc
}
}
fn header_height(width: u16) -> u16 {
if width >= 80 { 1 } else { 2 }
}
fn render_side_panel(frame: &mut Frame, app: &App, area: Rect) {
let focused = app.panel.focus == PanelFocus::Side;
match &app.panel.side {
@@ -252,9 +256,9 @@ fn render_header(
let bank = &app.project_state.project.banks[app.editor_ctx.bank];
let pattern = &bank.patterns[app.editor_ctx.pattern];
// Layout: [Transport] [Live] [Tempo] [Bank] [Pattern] [Stats]
let [transport_area, live_area, tempo_area, bank_area, pattern_area, stats_area] =
Layout::horizontal([
let (transport_area, live_area, tempo_area, bank_area, pattern_area, stats_area) =
if area.height == 1 {
let [t, l, tp, b, p, s] = Layout::horizontal([
Constraint::Min(12),
Constraint::Length(9),
Constraint::Min(14),
@@ -263,6 +267,30 @@ fn render_header(
Constraint::Min(20),
])
.areas(area);
(t, l, tp, b, p, s)
} else {
let [line1, line2] = Layout::vertical([
Constraint::Length(1),
Constraint::Length(1),
])
.areas(area);
let [t, l, tp, s] = Layout::horizontal([
Constraint::Min(12),
Constraint::Length(9),
Constraint::Fill(1),
Constraint::Min(20),
])
.areas(line1);
let [b, p] = Layout::horizontal([
Constraint::Fill(1),
Constraint::Fill(2),
])
.areas(line2);
(t, l, tp, b, p, s)
};
// Transport block
let (transport_bg, transport_text) = if app.playback.playing {