Merge remote-tracking branch 'origin/master' into feat/multi-window-support
# Conflicts: # Cargo.toml # core/src/window/icon.rs # core/src/window/id.rs # core/src/window/position.rs # core/src/window/settings.rs # examples/integration/src/main.rs # examples/integration_opengl/src/main.rs # glutin/src/application.rs # native/src/subscription.rs # native/src/window.rs # runtime/src/window/action.rs # src/lib.rs # src/window.rs # winit/Cargo.toml # winit/src/application.rs # winit/src/icon.rs # winit/src/settings.rs # winit/src/window.rs
This commit is contained in:
commit
633f405f3f
394 changed files with 17278 additions and 13290 deletions
78
core/src/event.rs
Normal file
78
core/src/event.rs
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
//! Handle events of a user interface.
|
||||
use crate::keyboard;
|
||||
use crate::mouse;
|
||||
use crate::touch;
|
||||
use crate::window;
|
||||
|
||||
/// A user interface event.
|
||||
///
|
||||
/// _**Note:** This type is largely incomplete! If you need to track
|
||||
/// additional events, feel free to [open an issue] and share your use case!_
|
||||
///
|
||||
/// [open an issue]: https://github.com/iced-rs/iced/issues
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum Event {
|
||||
/// A keyboard event
|
||||
Keyboard(keyboard::Event),
|
||||
|
||||
/// A mouse event
|
||||
Mouse(mouse::Event),
|
||||
|
||||
/// A window event
|
||||
Window(window::Id, window::Event),
|
||||
|
||||
/// A touch event
|
||||
Touch(touch::Event),
|
||||
|
||||
/// A platform specific event
|
||||
PlatformSpecific(PlatformSpecific),
|
||||
}
|
||||
|
||||
/// A platform specific event
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub enum PlatformSpecific {
|
||||
/// A MacOS specific event
|
||||
MacOS(MacOS),
|
||||
}
|
||||
|
||||
/// Describes an event specific to MacOS
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub enum MacOS {
|
||||
/// Triggered when the app receives an URL from the system
|
||||
///
|
||||
/// _**Note:** For this event to be triggered, the executable needs to be properly [bundled]!_
|
||||
///
|
||||
/// [bundled]: https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW19
|
||||
ReceivedUrl(String),
|
||||
}
|
||||
|
||||
/// The status of an [`Event`] after being processed.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum Status {
|
||||
/// The [`Event`] was **NOT** handled by any widget.
|
||||
Ignored,
|
||||
|
||||
/// The [`Event`] was handled and processed by a widget.
|
||||
Captured,
|
||||
}
|
||||
|
||||
impl Status {
|
||||
/// Merges two [`Status`] into one.
|
||||
///
|
||||
/// `Captured` takes precedence over `Ignored`:
|
||||
///
|
||||
/// ```
|
||||
/// use iced_core::event::Status;
|
||||
///
|
||||
/// assert_eq!(Status::Ignored.merge(Status::Ignored), Status::Ignored);
|
||||
/// assert_eq!(Status::Ignored.merge(Status::Captured), Status::Captured);
|
||||
/// assert_eq!(Status::Captured.merge(Status::Ignored), Status::Captured);
|
||||
/// assert_eq!(Status::Captured.merge(Status::Captured), Status::Captured);
|
||||
/// ```
|
||||
pub fn merge(self, b: Self) -> Self {
|
||||
match self {
|
||||
Status::Ignored => b,
|
||||
Status::Captured => Status::Captured,
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue