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 {
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<WidgetPod<LapceTabData, Box<dyn Widget<LapceTabData>>>>,
content: WidgetPod<LapceTabData, Box<dyn Widget<LapceTabData>>>,
content: WidgetPod<
LapceTabData,
LapceScrollNew<LapceTabData, Box<dyn Widget<LapceTabData>>>,
>,
}
impl PanelSection {
@ -186,7 +189,7 @@ pub fn new(
header: Option<Box<dyn Widget<LapceTabData>>>,
content: Box<dyn Widget<LapceTabData>>,
) -> Self {
let content = LapceScrollNew::new(content).vertical().boxed();
let content = LapceScrollNew::new(content).vertical();
Self {
widget_id,
header: header.map(WidgetPod::new),

View File

@ -83,21 +83,18 @@ pub struct LapceSettingsPanel {
switcher_rect: Rect,
switcher_line_height: f64,
close_rect: Rect,
children: Vec<WidgetPod<LapceTabData, Box<dyn Widget<LapceTabData>>>>,
children: Vec<WidgetPod<LapceTabData, LapceSplitNew>>,
}
impl LapceSettingsPanel {
pub fn new(data: &LapceTabData) -> Self {
let children = vec![
WidgetPod::new(Box::new(LapceSettings::new_split(
LapceSettingsKind::Core,
data,
)) as Box<dyn Widget<_>>),
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);
}

View File

@ -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()