Replace event::Status in Widget::on_event with Shell::capture_event
This commit is contained in:
parent
752403d70c
commit
dcc184b01b
44 changed files with 560 additions and 709 deletions
|
|
@ -166,7 +166,7 @@ where
|
|||
renderer: &Renderer,
|
||||
clipboard: &mut dyn Clipboard,
|
||||
shell: &mut Shell<'_, Message>,
|
||||
) -> event::Status {
|
||||
) {
|
||||
fn recurse<Message, Theme, Renderer>(
|
||||
element: &mut overlay::Element<'_, Message, Theme, Renderer>,
|
||||
layout: Layout<'_>,
|
||||
|
|
@ -175,31 +175,30 @@ where
|
|||
renderer: &Renderer,
|
||||
clipboard: &mut dyn Clipboard,
|
||||
shell: &mut Shell<'_, Message>,
|
||||
) -> (event::Status, bool)
|
||||
) -> bool
|
||||
where
|
||||
Renderer: renderer::Renderer,
|
||||
{
|
||||
let mut layouts = layout.children();
|
||||
|
||||
if let Some(layout) = layouts.next() {
|
||||
let (nested_status, nested_is_over) =
|
||||
if let Some((mut nested, nested_layout)) =
|
||||
element.overlay(layout, renderer).zip(layouts.next())
|
||||
{
|
||||
recurse(
|
||||
&mut nested,
|
||||
nested_layout,
|
||||
event.clone(),
|
||||
cursor,
|
||||
renderer,
|
||||
clipboard,
|
||||
shell,
|
||||
)
|
||||
} else {
|
||||
(event::Status::Ignored, false)
|
||||
};
|
||||
let nested_is_over = if let Some((mut nested, nested_layout)) =
|
||||
element.overlay(layout, renderer).zip(layouts.next())
|
||||
{
|
||||
recurse(
|
||||
&mut nested,
|
||||
nested_layout,
|
||||
event.clone(),
|
||||
cursor,
|
||||
renderer,
|
||||
clipboard,
|
||||
shell,
|
||||
)
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
||||
if matches!(nested_status, event::Status::Ignored) {
|
||||
if shell.event_status() == event::Status::Ignored {
|
||||
let is_over = nested_is_over
|
||||
|| cursor
|
||||
.position()
|
||||
|
|
@ -212,30 +211,29 @@ where
|
|||
})
|
||||
.unwrap_or_default();
|
||||
|
||||
(
|
||||
element.on_event(
|
||||
event,
|
||||
layout,
|
||||
if nested_is_over {
|
||||
mouse::Cursor::Unavailable
|
||||
} else {
|
||||
cursor
|
||||
},
|
||||
renderer,
|
||||
clipboard,
|
||||
shell,
|
||||
),
|
||||
is_over,
|
||||
)
|
||||
element.on_event(
|
||||
event,
|
||||
layout,
|
||||
if nested_is_over {
|
||||
mouse::Cursor::Unavailable
|
||||
} else {
|
||||
cursor
|
||||
},
|
||||
renderer,
|
||||
clipboard,
|
||||
shell,
|
||||
);
|
||||
|
||||
is_over
|
||||
} else {
|
||||
(nested_status, nested_is_over)
|
||||
nested_is_over
|
||||
}
|
||||
} else {
|
||||
(event::Status::Ignored, false)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
let (status, _) = recurse(
|
||||
let _ = recurse(
|
||||
&mut self.overlay,
|
||||
layout,
|
||||
event,
|
||||
|
|
@ -244,8 +242,6 @@ where
|
|||
clipboard,
|
||||
shell,
|
||||
);
|
||||
|
||||
status
|
||||
}
|
||||
|
||||
/// Returns the current [`mouse::Interaction`] of the [`Nested`] overlay.
|
||||
|
|
|
|||
|
|
@ -210,7 +210,7 @@ where
|
|||
for event in events.iter().cloned() {
|
||||
let mut shell = Shell::new(messages);
|
||||
|
||||
let event_status = overlay.on_event(
|
||||
overlay.on_event(
|
||||
event,
|
||||
Layout::new(&layout),
|
||||
cursor,
|
||||
|
|
@ -219,7 +219,7 @@ where
|
|||
&mut shell,
|
||||
);
|
||||
|
||||
event_statuses.push(event_status);
|
||||
event_statuses.push(shell.event_status());
|
||||
|
||||
match (redraw_request, shell.redraw_request()) {
|
||||
(None, Some(at)) => {
|
||||
|
|
@ -308,7 +308,7 @@ where
|
|||
|
||||
let mut shell = Shell::new(messages);
|
||||
|
||||
let event_status = self.root.as_widget_mut().on_event(
|
||||
self.root.as_widget_mut().on_event(
|
||||
&mut self.state,
|
||||
event,
|
||||
Layout::new(&self.base),
|
||||
|
|
@ -319,7 +319,7 @@ where
|
|||
&viewport,
|
||||
);
|
||||
|
||||
if matches!(event_status, event::Status::Captured) {
|
||||
if shell.event_status() == event::Status::Captured {
|
||||
self.overlay = None;
|
||||
}
|
||||
|
||||
|
|
@ -347,7 +347,7 @@ where
|
|||
outdated = true;
|
||||
}
|
||||
|
||||
event_status.merge(overlay_status)
|
||||
shell.event_status().merge(overlay_status)
|
||||
})
|
||||
.collect();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue