|
@@ -5,10 +5,14 @@ use dioxus_core::*;
|
|
pub mod on {
|
|
pub mod on {
|
|
//! Input events and associated data
|
|
//! Input events and associated data
|
|
|
|
|
|
- use crate::geometry::{ClientPoint, Coordinates, ElementPoint, PagePoint, ScreenPoint};
|
|
|
|
|
|
+ use crate::geometry::{
|
|
|
|
+ ClientPoint, Coordinates, ElementPoint, LinesVector, PagePoint, PagesVector, PixelsVector,
|
|
|
|
+ ScreenPoint, WheelDelta,
|
|
|
|
+ };
|
|
use crate::input_data::{
|
|
use crate::input_data::{
|
|
decode_mouse_button_set, encode_mouse_button_set, MouseButton, MouseButtonSet,
|
|
decode_mouse_button_set, encode_mouse_button_set, MouseButton, MouseButtonSet,
|
|
};
|
|
};
|
|
|
|
+ use euclid::UnknownUnit;
|
|
use keyboard_types::Modifiers;
|
|
use keyboard_types::Modifiers;
|
|
use std::collections::HashMap;
|
|
use std::collections::HashMap;
|
|
|
|
|
|
@@ -740,12 +744,62 @@ pub mod on {
|
|
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
|
|
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
|
|
#[derive(Debug, Clone)]
|
|
#[derive(Debug, Clone)]
|
|
pub struct WheelData {
|
|
pub struct WheelData {
|
|
|
|
+ #[deprecated(since = "0.3.0", note = "use delta() instead")]
|
|
pub delta_mode: u32,
|
|
pub delta_mode: u32,
|
|
|
|
+ #[deprecated(since = "0.3.0", note = "use delta() instead")]
|
|
pub delta_x: f64,
|
|
pub delta_x: f64,
|
|
|
|
+ #[deprecated(since = "0.3.0", note = "use delta() instead")]
|
|
pub delta_y: f64,
|
|
pub delta_y: f64,
|
|
|
|
+ #[deprecated(since = "0.3.0", note = "use delta() instead")]
|
|
pub delta_z: f64,
|
|
pub delta_z: f64,
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ impl WheelData {
|
|
|
|
+ pub fn new(delta: WheelDelta) -> Self {
|
|
|
|
+ let (delta_mode, vector) = match delta {
|
|
|
|
+ WheelDelta::Pixels(v) => (0, v.cast_unit::<UnknownUnit>()),
|
|
|
|
+ WheelDelta::Lines(v) => (1, v.cast_unit::<UnknownUnit>()),
|
|
|
|
+ WheelDelta::Pages(v) => (2, v.cast_unit::<UnknownUnit>()),
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ #[allow(deprecated)]
|
|
|
|
+ WheelData {
|
|
|
|
+ delta_mode,
|
|
|
|
+ delta_x: vector.x,
|
|
|
|
+ delta_y: vector.y,
|
|
|
|
+ delta_z: vector.z,
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ pub fn from_web_attributes(
|
|
|
|
+ delta_mode: u32,
|
|
|
|
+ delta_x: f64,
|
|
|
|
+ delta_y: f64,
|
|
|
|
+ delta_z: f64,
|
|
|
|
+ ) -> Self {
|
|
|
|
+ #[allow(deprecated)]
|
|
|
|
+ Self {
|
|
|
|
+ delta_mode,
|
|
|
|
+ delta_x,
|
|
|
|
+ delta_y,
|
|
|
|
+ delta_z,
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ #[allow(deprecated)]
|
|
|
|
+ pub fn delta(&self) -> WheelDelta {
|
|
|
|
+ let x = self.delta_x;
|
|
|
|
+ let y = self.delta_y;
|
|
|
|
+ let z = self.delta_z;
|
|
|
|
+ match self.delta_mode {
|
|
|
|
+ 0 => WheelDelta::Pixels(PixelsVector::new(x, y, z)),
|
|
|
|
+ 1 => WheelDelta::Lines(LinesVector::new(x, y, z)),
|
|
|
|
+ 2 => WheelDelta::Pages(PagesVector::new(x, y, z)),
|
|
|
|
+ _ => panic!("Invalid delta mode, {:?}", self.delta_mode),
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
pub type MediaEvent = UiEvent<MediaData>;
|
|
pub type MediaEvent = UiEvent<MediaData>;
|
|
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
|
|
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
|
|
#[derive(Debug, Clone)]
|
|
#[derive(Debug, Clone)]
|