From 220e6d19bdd51631c03e48335563c746f44ce2be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kav=C3=ADk?= Date: Tue, 18 Jun 2024 19:56:03 +0200 Subject: [PATCH] automatically hide WaveformPanel --- frontend/src/main.rs | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/frontend/src/main.rs b/frontend/src/main.rs index 8f8ddc5..b0fbfdf 100644 --- a/frontend/src/main.rs +++ b/frontend/src/main.rs @@ -65,22 +65,29 @@ fn root() -> impl Element { layout.clone(), loaded_filename, )) - .item_signal( - layout - .signal() - .map(|layout| matches!(layout, Layout::Tree)) - .map_true( - clone!((hierarchy, selected_var_refs) move || WaveformPanel::new( + .item_signal({ + let hierarchy = hierarchy.clone(); + let selected_var_refs = selected_var_refs.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) move || WaveformPanel::new( hierarchy.clone(), selected_var_refs.clone(), - )), - ), - ), + ))) + } + } + }), ) .item_signal( - layout - .signal() - .map(|layout| matches!(layout, Layout::Columns)) - .map_true(move || WaveformPanel::new(hierarchy.clone(), selected_var_refs.clone())), + 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) move || WaveformPanel::new( + hierarchy.clone(), + selected_var_refs.clone(), + ))) + } + } ) }