use crate::*;
#[derive(Data)]
pub struct NativeEventHandler {
#[set(pub(crate))]
pub(crate) event_name: String,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) callback: Rc<RefCell<dyn FnMut(NativeEvent)>>,
}
#[derive(Data, Default)]
pub struct NativeMouseEvent {
pub(crate) client_x: i32,
pub(crate) client_y: i32,
pub(crate) screen_x: i32,
pub(crate) screen_y: i32,
pub(crate) button: i16,
pub(crate) buttons: u16,
pub(crate) ctrl_key: bool,
pub(crate) shift_key: bool,
pub(crate) alt_key: bool,
pub(crate) meta_key: bool,
}
#[derive(Data, Default)]
pub struct NativeInputEvent {
value: String,
input_type: String,
}
#[derive(Data, Default)]
pub struct NativeKeyboardEvent {
pub(crate) key: String,
pub(crate) code: String,
pub(crate) location: u32,
pub(crate) ctrl_key: bool,
pub(crate) shift_key: bool,
pub(crate) alt_key: bool,
pub(crate) meta_key: bool,
pub(crate) repeat: bool,
}
#[derive(Data, Default)]
pub struct NativeFocusEvent {
is_focus: bool,
is_blur: bool,
}
#[derive(Data, Default)]
pub struct NativeSubmitEvent {
submitter: Option<String>,
}
#[derive(Data, Default)]
pub struct NativeChangeEvent {
value: String,
checked: bool,
}
#[derive(Data, Default)]
pub struct NativeDragEvent {
client_x: i32,
client_y: i32,
types: Vec<String>,
}
#[derive(Data, Default)]
pub struct NativeTouchEvent {
touches_count: u32,
client_x: i32,
client_y: i32,
}
#[derive(Data, Default)]
pub struct NativeWheelEvent {
delta_x: f64,
delta_y: f64,
delta_mode: u32,
}
#[derive(Data, Default)]
pub struct NativeClipboardEvent {
data: Option<String>,
}
#[derive(Data, Default)]
pub struct NativeMediaEvent {
event_type: String,
}