Merge pull request #478 from bugadani/events

Propagate events to hidden if necessary, remove some boxes
This commit is contained in:
Dongdong Zhou 2022-05-08 20:22:26 +01:00 committed by GitHub
commit c3c123b50a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 13 deletions

View File

@ -134,7 +134,7 @@ pub fn new(
Self { Self {
widget_id, widget_id,
split: WidgetPod::new(split), split: WidgetPod::new(split),
header: WidgetPod::new(header.boxed()), header: WidgetPod::new(header),
} }
} }
} }
@ -177,7 +177,10 @@ pub struct PanelSection {
#[allow(dead_code)] #[allow(dead_code)]
widget_id: WidgetId, widget_id: WidgetId,
header: Option<WidgetPod<LapceTabData, Box<dyn Widget<LapceTabData>>>>, header: Option<WidgetPod<LapceTabData, Box<dyn Widget<LapceTabData>>>>,
content: WidgetPod<LapceTabData, Box<dyn Widget<LapceTabData>>>, content: WidgetPod<
LapceTabData,
LapceScrollNew<LapceTabData, Box<dyn Widget<LapceTabData>>>,
>,
} }
impl PanelSection { impl PanelSection {
@ -186,7 +189,7 @@ pub fn new(
header: Option<Box<dyn Widget<LapceTabData>>>, header: Option<Box<dyn Widget<LapceTabData>>>,
content: Box<dyn Widget<LapceTabData>>, content: Box<dyn Widget<LapceTabData>>,
) -> Self { ) -> Self {
let content = LapceScrollNew::new(content).vertical().boxed(); let content = LapceScrollNew::new(content).vertical();
Self { Self {
widget_id, widget_id,
header: header.map(WidgetPod::new), header: header.map(WidgetPod::new),

View File

@ -83,21 +83,18 @@ pub struct LapceSettingsPanel {
switcher_rect: Rect, switcher_rect: Rect,
switcher_line_height: f64, switcher_line_height: f64,
close_rect: Rect, close_rect: Rect,
children: Vec<WidgetPod<LapceTabData, Box<dyn Widget<LapceTabData>>>>, children: Vec<WidgetPod<LapceTabData, LapceSplitNew>>,
} }
impl LapceSettingsPanel { impl LapceSettingsPanel {
pub fn new(data: &LapceTabData) -> Self { pub fn new(data: &LapceTabData) -> Self {
let children = vec![ let children = vec![
WidgetPod::new(Box::new(LapceSettings::new_split( WidgetPod::new(LapceSettings::new_split(LapceSettingsKind::Core, data)),
LapceSettingsKind::Core, WidgetPod::new(LapceSettings::new_split(
data,
)) as Box<dyn Widget<_>>),
WidgetPod::new(Box::new(LapceSettings::new_split(
LapceSettingsKind::Editor, LapceSettingsKind::Editor,
data, data,
))), )),
WidgetPod::new(Box::new(LapceKeymap::new_split(data))), WidgetPod::new(LapceKeymap::new_split(data)),
]; ];
Self { Self {
widget_id: data.settings.panel_widget_id, widget_id: data.settings.panel_widget_id,
@ -158,7 +155,7 @@ fn event(
data: &mut LapceTabData, data: &mut LapceTabData,
env: &Env, env: &Env,
) { ) {
if !data.settings.shown { if !data.settings.shown && !event.should_propagate_to_hidden() {
return; return;
} }
match event { match event {
@ -237,6 +234,9 @@ fn lifecycle(
data: &LapceTabData, data: &LapceTabData,
env: &Env, env: &Env,
) { ) {
if !data.settings.shown && !event.should_propagate_to_hidden() {
return;
}
for child in self.children.iter_mut() { for child in self.children.iter_mut() {
child.lifecycle(ctx, event, data, env); child.lifecycle(ctx, event, data, env);
} }

View File

@ -984,7 +984,7 @@ fn event(
self.main_split.event(ctx, event, data, env); self.main_split.event(ctx, event, data, env);
self.status.event(ctx, event, data, env); self.status.event(ctx, event, data, env);
for (_, panel) in data.panels.clone().iter() { for (_, panel) in data.panels.clone().iter() {
if panel.is_shown() { if panel.is_shown() || event.should_propagate_to_hidden() {
self.panels self.panels
.get_mut(&panel.active) .get_mut(&panel.active)
.unwrap() .unwrap()