This commit is contained in:
Antonio Scandurra 2022-05-05 15:15:58 +02:00
parent 6b22c47d47
commit 61346f734d
16 changed files with 39 additions and 27 deletions

View file

@ -15,7 +15,7 @@ pub struct MouseEventHandler {
child: ElementBox,
cursor_style: Option<CursorStyle>,
mouse_down_handler: Option<Box<dyn FnMut(&mut EventContext)>>,
click_handler: Option<Box<dyn FnMut(&mut EventContext)>>,
click_handler: Option<Box<dyn FnMut(usize, &mut EventContext)>>,
drag_handler: Option<Box<dyn FnMut(Vector2F, &mut EventContext)>>,
padding: Padding,
}
@ -57,7 +57,7 @@ impl MouseEventHandler {
self
}
pub fn on_click(mut self, handler: impl FnMut(&mut EventContext) + 'static) -> Self {
pub fn on_click(mut self, handler: impl FnMut(usize, &mut EventContext) + 'static) -> Self {
self.click_handler = Some(Box::new(handler));
self
}
@ -151,14 +151,18 @@ impl Element for MouseEventHandler {
handled_in_child
}
}
Event::LeftMouseUp { position, .. } => {
Event::LeftMouseUp {
position,
click_count,
..
} => {
state.prev_drag_position = None;
if !handled_in_child && state.clicked {
state.clicked = false;
cx.notify();
if let Some(handler) = click_handler {
if hit_bounds.contains_point(*position) {
handler(cx);
handler(*click_count, cx);
}
}
true