request_timeline_redraw()

This commit is contained in:
Martin Kavík 2024-07-08 02:23:48 +02:00
parent 55f1b42ab0
commit 7015cc9ce6
7 changed files with 64 additions and 16 deletions

View file

@ -8,7 +8,7 @@ mod controls_panel;
use controls_panel::ControlsPanel;
mod waveform_panel;
use waveform_panel::WaveformPanel;
use waveform_panel::{PixiController, WaveformPanel};
mod header_panel;
use header_panel::HeaderPanel;
@ -27,6 +27,7 @@ struct Store {
selected_var_refs: MutableVec<wellen::VarRef>,
hierarchy: Mutable<Option<Arc<wellen::Hierarchy>>>,
loaded_filename: Mutable<Option<Filename>>,
canvas_controller: Mutable<Mutable<Option<SendWrapper<PixiController>>>>,
}
static STORE: Lazy<Store> = lazy::default();
@ -45,6 +46,7 @@ fn root() -> impl Element {
let selected_var_refs = STORE.selected_var_refs.clone();
let layout: Mutable<Layout> = <_>::default();
let loaded_filename = STORE.loaded_filename.clone();
let canvas_controller = STORE.canvas_controller.clone();
Column::new()
.s(Height::fill())
.s(Scrollbars::y_and_clip_x())
@ -69,13 +71,15 @@ fn root() -> impl Element {
let hierarchy = hierarchy.clone();
let selected_var_refs = selected_var_refs.clone();
let loaded_filename = loaded_filename.clone();
let canvas_controller = canvas_controller.clone();
map_ref!{
let layout = layout.signal(),
let hierarchy_is_some = hierarchy.signal_ref(Option::is_some) => {
(*hierarchy_is_some && matches!(layout, Layout::Tree)).then(clone!((hierarchy, selected_var_refs, loaded_filename) move || WaveformPanel::new(
(*hierarchy_is_some && matches!(layout, Layout::Tree)).then(clone!((hierarchy, selected_var_refs, loaded_filename, canvas_controller) move || WaveformPanel::new(
hierarchy.clone(),
selected_var_refs.clone(),
loaded_filename.clone(),
canvas_controller.clone(),
)))
}
}
@ -85,10 +89,11 @@ fn root() -> impl Element {
map_ref!{
let layout = layout.signal(),
let hierarchy_is_some = hierarchy.signal_ref(Option::is_some) => {
(*hierarchy_is_some && matches!(layout, Layout::Columns)).then(clone!((hierarchy, selected_var_refs, loaded_filename) move || WaveformPanel::new(
(*hierarchy_is_some && matches!(layout, Layout::Columns)).then(clone!((hierarchy, selected_var_refs, loaded_filename, canvas_controller) move || WaveformPanel::new(
hierarchy.clone(),
selected_var_refs.clone(),
loaded_filename.clone(),
canvas_controller.clone(),
)))
}
}