1use std::path::PathBuf;
2
3use magma_app::magma_ecs::entities::Entity;
4use magma_math::IVec2;
5
6use crate::window::WindowTheme;
7
8#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
10pub struct WindowResized {
11 pub window: Entity,
12 pub width: u32,
13 pub height: u32,
14}
15
16#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
18pub struct RedrawRequested;
19
20#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
22pub struct WindowCreated {
23 pub window: Entity,
24}
25
26#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
28pub struct WindowCloseRequested {
29 pub window: Entity,
30}
31
32#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
34pub struct WindowClosed {
35 pub window: Entity,
36}
37
38#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
40pub struct WindowDestroyed;
41
42#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default)]
44pub struct CursorMoved {
45 pub window: Entity,
46 pub position: IVec2,
47}
48
49#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
51pub struct CursorEntered {
52 pub window: Entity,
53}
54
55#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
57pub struct CursorLeft {
58 pub window: Entity,
59}
60
61#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
63pub struct WindowFocused {
64 pub window: Entity,
65 pub focus: bool,
66}
67
68#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
70pub enum WindowOcclusion {
71 Occluded { window: Entity },
73 NotOccluded { window: Entity },
75}
76
77#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
79pub enum FileDragDrop {
80 Dropped { window: Entity, path: PathBuf },
82 Hovered { window: Entity, path: PathBuf },
84 HoverCanceled { window: Entity },
86}
87
88#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default)]
90pub struct WindowMoved {
91 pub window: Entity,
92 pub position: IVec2,
93}
94
95#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)]
97pub struct WindowThemeChanged {
98 pub window: Entity,
99 pub theme: WindowTheme,
100}