freya_elements/events/wheel.rs
1use crate::{
2 events::ErasedEventData,
3 impl_event,
4};
5
6impl_event! [
7 WheelData;
8
9 /// The `wheel` event fires when the user scrolls the mouse wheel while hovering over the element.
10 ///
11 /// Event Data: [`WheelData`](crate::events::WheelData)
12 ///
13 /// ### Example
14 ///
15 /// ```rust, no_run
16 /// # use freya::prelude::*;
17 /// fn app() -> Element {
18 /// rsx!(
19 /// rect {
20 /// width: "100",
21 /// height: "100",
22 /// background: "red",
23 /// onwheel: |_| println!("Scrolling with the wheel!")
24 /// }
25 /// )
26 /// }
27 /// ```
28 onwheel
29];
30
31/// Data of a Wheel event.
32#[derive(Debug, Clone, PartialEq)]
33pub struct WheelData {
34 #[allow(dead_code)]
35 delta_x: f64,
36 delta_y: f64,
37}
38
39impl WheelData {
40 pub fn new(delta_x: f64, delta_y: f64) -> Self {
41 Self { delta_x, delta_y }
42 }
43}
44
45impl WheelData {
46 /// Get the X delta.
47 pub fn get_delta_x(&self) -> f64 {
48 self.delta_x
49 }
50
51 /// Get the Y delta.
52 pub fn get_delta_y(&self) -> f64 {
53 self.delta_y
54 }
55}
56
57impl From<&ErasedEventData> for WheelData {
58 fn from(val: &ErasedEventData) -> Self {
59 val.downcast::<WheelData>().cloned().unwrap()
60 }
61}