Skip to main content

ferroui_base/input/
pointer_wheel_event_args.rs

1use super::{IPointer, InputElement, KeyModifiers, PointerEventArgs, PointerPointProperties};
2use crate::{ferro_routed_event_args, FerroObject, Nullable, Point, Vector, Visual};
3use std::rc::Rc;
4
5/// Provides data for the pointer wheel changed event.
6#[derive(Clone)]
7pub struct PointerWheelEventArgs {
8    base: PointerEventArgs,
9    delta: Vector,
10}
11
12ferro_routed_event_args!(PointerWheelEventArgs: PointerEventArgs);
13
14impl PointerWheelEventArgs {
15    /// Creates pointer wheel event args.
16    #[allow(clippy::too_many_arguments)]
17    pub fn new(
18        source: impl Into<Nullable<FerroObject>>,
19        pointer: Rc<dyn IPointer>,
20        root_visual: &Visual,
21        root_visual_position: Point,
22        timestamp: u64,
23        properties: PointerPointProperties,
24        modifiers: KeyModifiers,
25        delta: Vector,
26    ) -> Self {
27        Self {
28            base: PointerEventArgs::new(
29                Some(InputElement::pointer_wheel_changed_event()),
30                source,
31                pointer,
32                Some(root_visual),
33                root_visual_position,
34                timestamp,
35                properties,
36                modifiers,
37            ),
38            delta,
39        }
40    }
41
42    /// The amount the wheel was scrolled by.
43    #[inline]
44    pub fn delta(&self) -> Vector {
45        self.delta
46    }
47}