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}