use crate::time::Instant; use crate::Size; use std::path::PathBuf; /// A window-related event. #[derive(PartialEq, Eq, Clone, Debug)] pub enum Event { /// A window was moved. Moved { /// The new logical x location of the window x: i32, /// The new logical y location of the window y: i32, }, /// A window was resized. Resized { /// The new logical width of the window width: u32, /// The new logical height of the window height: u32, }, /// A window redraw was requested. /// /// The [`Instant`] contains the current time. RedrawRequested(Instant), /// The user has requested for the window to close. CloseRequested, /// A window was destroyed by the runtime. Destroyed, /// A window was created. /// /// **Note:** this event is not supported on Wayland. Created { /// The position of the created window. This is relative to the top-left corner of the desktop /// the window is on, including virtual desktops. Refers to window's "inner" position, /// or the client area, in logical pixels. position: (i32, i32), /// The size of the created window. This is its "inner" size, or the size of the /// client area, in logical pixels. size: Size, }, /// A window was focused. Focused, /// A window was unfocused. Unfocused, /// A file is being hovered over the window. /// /// When the user hovers multiple files at once, this event will be emitted /// for each file separately. FileHovered(PathBuf), /// A file has beend dropped into the window. /// /// When the user drops multiple files at once, this event will be emitted /// for each file separately. FileDropped(PathBuf), /// A file was hovered, but has exited the window. /// /// There will be a single `FilesHoveredLeft` event triggered even if /// multiple files were hovered. FilesHoveredLeft, }