diff --git a/lapce-ui/src/panel.rs b/lapce-ui/src/panel.rs index 1f82a168..bbaa31d6 100644 --- a/lapce-ui/src/panel.rs +++ b/lapce-ui/src/panel.rs @@ -134,7 +134,7 @@ pub fn new( Self { widget_id, split: WidgetPod::new(split), - header: WidgetPod::new(header.boxed()), + header: WidgetPod::new(header), } } } @@ -177,7 +177,10 @@ pub struct PanelSection { #[allow(dead_code)] widget_id: WidgetId, header: Option>>>, - content: WidgetPod>>, + content: WidgetPod< + LapceTabData, + LapceScrollNew>>, + >, } impl PanelSection { @@ -186,7 +189,7 @@ pub fn new( header: Option>>, content: Box>, ) -> Self { - let content = LapceScrollNew::new(content).vertical().boxed(); + let content = LapceScrollNew::new(content).vertical(); Self { widget_id, header: header.map(WidgetPod::new), diff --git a/lapce-ui/src/settings.rs b/lapce-ui/src/settings.rs index 43c23bad..03204db8 100644 --- a/lapce-ui/src/settings.rs +++ b/lapce-ui/src/settings.rs @@ -83,21 +83,18 @@ pub struct LapceSettingsPanel { switcher_rect: Rect, switcher_line_height: f64, close_rect: Rect, - children: Vec>>>, + children: Vec>, } impl LapceSettingsPanel { pub fn new(data: &LapceTabData) -> Self { let children = vec![ - WidgetPod::new(Box::new(LapceSettings::new_split( - LapceSettingsKind::Core, - data, - )) as Box>), - WidgetPod::new(Box::new(LapceSettings::new_split( + WidgetPod::new(LapceSettings::new_split(LapceSettingsKind::Core, data)), + WidgetPod::new(LapceSettings::new_split( LapceSettingsKind::Editor, data, - ))), - WidgetPod::new(Box::new(LapceKeymap::new_split(data))), + )), + WidgetPod::new(LapceKeymap::new_split(data)), ]; Self { widget_id: data.settings.panel_widget_id, @@ -158,7 +155,7 @@ fn event( data: &mut LapceTabData, env: &Env, ) { - if !data.settings.shown { + if !data.settings.shown && !event.should_propagate_to_hidden() { return; } match event { @@ -237,6 +234,9 @@ fn lifecycle( data: &LapceTabData, env: &Env, ) { + if !data.settings.shown && !event.should_propagate_to_hidden() { + return; + } for child in self.children.iter_mut() { child.lifecycle(ctx, event, data, env); } diff --git a/lapce-ui/src/tab.rs b/lapce-ui/src/tab.rs index 9721e19a..ce4dac20 100644 --- a/lapce-ui/src/tab.rs +++ b/lapce-ui/src/tab.rs @@ -984,7 +984,7 @@ fn event( self.main_split.event(ctx, event, data, env); self.status.event(ctx, event, data, env); for (_, panel) in data.panels.clone().iter() { - if panel.is_shown() { + if panel.is_shown() || event.should_propagate_to_hidden() { self.panels .get_mut(&panel.active) .unwrap()