Skip to content

Commit

Permalink
Cursor availability during on_event
Browse files Browse the repository at this point in the history
  • Loading branch information
tarkah committed Feb 19, 2023
1 parent 0c2f886 commit a617f3a
Showing 1 changed file with 43 additions and 28 deletions.
71 changes: 43 additions & 28 deletions native/src/overlay/nested.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,55 +180,70 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
) -> event::Status
) -> (event::Status, bool)
where
Renderer: crate::Renderer,
{
let mut layouts = layout.children();

if let Some(layout) = layouts.next() {
let status = if let Some((mut nested, nested_layout)) =
element.overlay(layout, renderer).zip(layouts.next())
{
recurse(
&mut nested,
nested_layout,
event.clone(),
cursor_position,
renderer,
clipboard,
shell,
)
} else {
event::Status::Ignored
};
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_position,
renderer,
clipboard,
shell,
)
} else {
(event::Status::Ignored, false)
};

if matches!(status, event::Status::Ignored) {
element.on_event(
event,
layout,
cursor_position,
renderer,
clipboard,
shell,
if matches!(nested_status, event::Status::Ignored) {
let is_over = nested_is_over
|| element.is_over(layout, renderer, cursor_position);

let cursor_position = if nested_is_over {
Point::new(-1.0, -1.0)
} else {
cursor_position
};

(
element.on_event(
event,
layout,
cursor_position,
renderer,
clipboard,
shell,
),
is_over,
)
} else {
status
(nested_status, nested_is_over)
}
} else {
event::Status::Ignored
(event::Status::Ignored, false)
}
}

recurse(
let (status, _) = recurse(
&mut self.overlay,
layout,
event,
cursor_position,
renderer,
clipboard,
shell,
)
);

status
}

pub fn mouse_interaction(
Expand Down

0 comments on commit a617f3a

Please sign in to comment.