ferroui_base/input/
tapped_event_args.rs1use super::{IKeyModifiersEventArgs, IPointer, KeyModifiers, PointerEventArgs};
2use crate::interactivity::{RoutedEvent, RoutedEventArgs};
3use crate::{ferro_routed_event_args, Point, Visual};
4use std::rc::Rc;
5
6#[derive(Clone)]
8pub struct TappedEventArgs {
9 base: RoutedEventArgs,
10 last_pointer_event_args: PointerEventArgs,
11}
12
13ferro_routed_event_args!(TappedEventArgs: RoutedEventArgs);
14
15impl TappedEventArgs {
16 pub fn new<T: ?Sized>(routed_event: Option<&RoutedEvent<T>>, last_pointer_event_args: &PointerEventArgs) -> Self {
19 let base = RoutedEventArgs::new();
20 base.set_routed_event(routed_event);
21 Self { base, last_pointer_event_args: last_pointer_event_args.clone() }
22 }
23
24 pub fn pointer(&self) -> &Rc<dyn IPointer> {
26 self.last_pointer_event_args.pointer()
27 }
28
29 pub fn key_modifiers(&self) -> KeyModifiers {
31 self.last_pointer_event_args.key_modifiers()
32 }
33
34 pub fn timestamp(&self) -> u64 {
37 self.last_pointer_event_args.timestamp()
38 }
39
40 pub fn get_position(&self, relative_to: Option<&Visual>) -> Point {
42 self.last_pointer_event_args.get_position(relative_to)
43 }
44}
45
46impl IKeyModifiersEventArgs for TappedEventArgs {
47 fn key_modifiers(&self) -> KeyModifiers {
48 self.last_pointer_event_args.key_modifiers()
49 }
50}