#[allow(unused)]
use super::{GrabMode, Manager, Response}; use super::{MouseButton, UpdateHandle, VirtualKeyCode};
use crate::geom::{Coord, DVec2};
use crate::{WidgetId, WindowId};
#[non_exhaustive]
#[derive(Clone, Debug, PartialEq)]
pub enum Event {
None,
Activate,
NavKey(NavKey),
LostCharFocus,
ReceivedCharacter(char),
Scroll(ScrollDelta),
Pan {
alpha: DVec2,
delta: DVec2,
},
PressStart {
source: PressSource,
start_id: WidgetId,
coord: Coord,
},
PressMove {
source: PressSource,
cur_id: Option<WidgetId>,
coord: Coord,
delta: Coord,
},
PressEnd {
source: PressSource,
end_id: Option<WidgetId>,
coord: Coord,
},
TimerUpdate,
HandleUpdate { handle: UpdateHandle, payload: u64 },
NewPopup(WidgetId),
PopupRemoved(WindowId),
NavFocus,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum NavKey {
Left,
Right,
Up,
Down,
Home,
End,
PageUp,
PageDown,
}
impl NavKey {
pub fn new(vkey: VirtualKeyCode) -> Option<Self> {
use VirtualKeyCode::*;
Some(match vkey {
Home => NavKey::Home,
End => NavKey::End,
PageDown => NavKey::PageDown,
PageUp => NavKey::PageUp,
Left => NavKey::Left,
Up => NavKey::Up,
Right => NavKey::Right,
Down => NavKey::Down,
_ => return None,
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum PressSource {
Mouse(MouseButton),
Touch(u64),
}
impl PressSource {
#[inline]
pub fn is_primary(self) -> bool {
match self {
PressSource::Mouse(button) => button == MouseButton::Left,
PressSource::Touch(_) => true,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum ScrollDelta {
LineDelta(f32, f32),
PixelDelta(Coord),
}