Remi
This commit is contained in:
@@ -538,6 +538,7 @@ impl SequencerState {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
self.audio_state.pending_starts.clear();
|
self.audio_state.pending_starts.clear();
|
||||||
|
self.audio_state.prev_beat = -1.0;
|
||||||
self.buf_audio_commands.clear();
|
self.buf_audio_commands.clear();
|
||||||
TickOutput {
|
TickOutput {
|
||||||
audio_commands: std::mem::take(&mut self.buf_audio_commands),
|
audio_commands: std::mem::take(&mut self.buf_audio_commands),
|
||||||
|
|||||||
@@ -893,7 +893,11 @@ fn handle_patterns_page(ctx: &mut InputContext, key: KeyEvent) -> InputResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
KeyCode::Enter => ctx.dispatch(AppCommand::PatternsEnter),
|
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('c') if !ctrl => ctx.dispatch(AppCommand::CommitStagedChanges),
|
||||||
KeyCode::Char('q') => {
|
KeyCode::Char('q') => {
|
||||||
ctx.dispatch(AppCommand::OpenModal(Modal::ConfirmQuit {
|
ctx.dispatch(AppCommand::OpenModal(Modal::ConfirmQuit {
|
||||||
|
|||||||
@@ -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([
|
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::Length(1),
|
||||||
Constraint::Fill(1),
|
Constraint::Fill(1),
|
||||||
Constraint::Length(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) {
|
fn render_side_panel(frame: &mut Frame, app: &App, area: Rect) {
|
||||||
let focused = app.panel.focus == PanelFocus::Side;
|
let focused = app.panel.focus == PanelFocus::Side;
|
||||||
match &app.panel.side {
|
match &app.panel.side {
|
||||||
@@ -252,9 +256,9 @@ fn render_header(
|
|||||||
let bank = &app.project_state.project.banks[app.editor_ctx.bank];
|
let bank = &app.project_state.project.banks[app.editor_ctx.bank];
|
||||||
let pattern = &bank.patterns[app.editor_ctx.pattern];
|
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) =
|
||||||
let [transport_area, live_area, tempo_area, bank_area, pattern_area, stats_area] =
|
if area.height == 1 {
|
||||||
Layout::horizontal([
|
let [t, l, tp, b, p, s] = Layout::horizontal([
|
||||||
Constraint::Min(12),
|
Constraint::Min(12),
|
||||||
Constraint::Length(9),
|
Constraint::Length(9),
|
||||||
Constraint::Min(14),
|
Constraint::Min(14),
|
||||||
@@ -263,6 +267,30 @@ fn render_header(
|
|||||||
Constraint::Min(20),
|
Constraint::Min(20),
|
||||||
])
|
])
|
||||||
.areas(area);
|
.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
|
// Transport block
|
||||||
let (transport_bg, transport_text) = if app.playback.playing {
|
let (transport_bg, transport_text) = if app.playback.playing {
|
||||||
|
|||||||
Reference in New Issue
Block a user