From 03e2e20258bc026906a660d61e267bec1e9e8def Mon Sep 17 00:00:00 2001 From: unspeaker Date: Wed, 23 Oct 2024 23:22:34 +0300 Subject: [PATCH] store notes area size at render --- crates/tek_sequencer/src/sequencer.rs | 6 ++++++ crates/tek_sequencer/src/sequencer_tui.rs | 2 ++ 2 files changed, 8 insertions(+) diff --git a/crates/tek_sequencer/src/sequencer.rs b/crates/tek_sequencer/src/sequencer.rs index 8fbf86fe..32170b49 100644 --- a/crates/tek_sequencer/src/sequencer.rs +++ b/crates/tek_sequencer/src/sequencer.rs @@ -103,6 +103,10 @@ pub struct PhraseEditor { pub notes_out: Arc>, /// Current position of global playhead pub now: Arc, + /// Width of notes area at last render + pub width: AtomicUsize, + /// Height of notes area at last render + pub height: AtomicUsize, } /// Phrase player. pub struct PhrasePlayer { @@ -237,6 +241,8 @@ impl PhraseEditor { entered: false, mode: false, now: Arc::new(0.into()), + width: 0.into(), + height: 0.into(), } } } diff --git a/crates/tek_sequencer/src/sequencer_tui.rs b/crates/tek_sequencer/src/sequencer_tui.rs index d1d6a014..0b7cf30e 100644 --- a/crates/tek_sequencer/src/sequencer_tui.rs +++ b/crates/tek_sequencer/src/sequencer_tui.rs @@ -67,6 +67,8 @@ impl Content for PhraseEditor { }).fill_y(); let notes_bg_null = Color::Rgb(28, 35, 25); let notes = CustomWidget::new(|to|Ok(Some(to)), move|to: &mut TuiOutput|{ + self.width.store(to.area.w() as usize, Ordering::Relaxed); + self.height.store(to.area.h() as usize, Ordering::Relaxed); if to.area().h() >= 2 { let area = to.area(); to.buffer_update(area, &move |cell, x, y|{