freya_core/
event_loop_messages.rs1use torin::prelude::{
2    Area,
3    CursorPoint,
4};
5use uuid::Uuid;
6use winit::window::{
7    CursorIcon,
8    Window,
9};
10
11use crate::{
12    accessibility::AccessibilityFocusStrategy,
13    events::PlatformEvent,
14};
15
16pub struct TextGroupMeasurement {
17    pub text_id: Uuid,
18    pub cursor_id: usize,
19    pub cursor_position: Option<CursorPoint>,
20    pub cursor_selection: Option<(CursorPoint, CursorPoint)>,
21}
22
23pub enum EventLoopMessage {
25    PollVDOM,
27    RequestRerender,
29    RequestFullRerender,
31    InvalidateArea(Area),
33    RemeasureTextGroup(TextGroupMeasurement),
35    SetCursorIcon(CursorIcon),
37    Accessibility(accesskit_winit::WindowEvent),
39    FocusAccessibilityNode(AccessibilityFocusStrategy),
41    ExitApp,
43    WithWindow(Box<dyn FnOnce(&Window) + Send + Sync>),
45    PlatformEvent(PlatformEvent),
47}
48
49impl From<accesskit_winit::Event> for EventLoopMessage {
50    fn from(value: accesskit_winit::Event) -> Self {
51        Self::Accessibility(value.window_event)
52    }
53}