mirror of https://github.com/lapce/lapce.git
Merge pull request #478 from bugadani/events
Propagate events to hidden if necessary, remove some boxes
This commit is contained in:
commit
c3c123b50a
|
@ -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),
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue