Instead of storing the event handler within the AppState, and extracting it our every time we need it, we now use the same event handling implementation as for macOS that ensures we don't re-entrantly call the event handler, and that we un-register the handler again after we're done using it (`UIApplicationMain` won't return, but may still unwind, so this is very important for panic safety).
67 lines
1.7 KiB
Rust
67 lines
1.7 KiB
Rust
#[macro_use]
|
|
mod util;
|
|
|
|
mod app;
|
|
mod app_state;
|
|
mod cursor;
|
|
mod event;
|
|
mod event_loop;
|
|
mod ffi;
|
|
mod menu;
|
|
mod monitor;
|
|
mod observer;
|
|
mod view;
|
|
mod window;
|
|
mod window_delegate;
|
|
|
|
use std::fmt;
|
|
|
|
pub(crate) use self::cursor::CustomCursor as PlatformCustomCursor;
|
|
pub(crate) use self::event::{physicalkey_to_scancode, scancode_to_physicalkey, KeyEventExtra};
|
|
pub(crate) use self::event_loop::{
|
|
ActiveEventLoop, EventLoop, EventLoopProxy, OwnedDisplayHandle,
|
|
PlatformSpecificEventLoopAttributes,
|
|
};
|
|
pub(crate) use self::monitor::{MonitorHandle, VideoModeHandle};
|
|
pub(crate) use self::window::{Window, WindowId};
|
|
pub(crate) use self::window_delegate::PlatformSpecificWindowAttributes;
|
|
pub(crate) use crate::cursor::OnlyCursorImageSource as PlatformCustomCursorSource;
|
|
use crate::event::DeviceId as RootDeviceId;
|
|
pub(crate) use crate::icon::NoIcon as PlatformIcon;
|
|
pub(crate) use crate::platform_impl::Fullscreen;
|
|
|
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
pub struct DeviceId;
|
|
|
|
impl DeviceId {
|
|
pub const fn dummy() -> Self {
|
|
DeviceId
|
|
}
|
|
}
|
|
|
|
// Constant device ID; to be removed when if backend is updated to report real device IDs.
|
|
pub(crate) const DEVICE_ID: RootDeviceId = RootDeviceId(DeviceId);
|
|
|
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
pub struct FingerId;
|
|
|
|
impl FingerId {
|
|
pub const fn dummy() -> Self {
|
|
FingerId
|
|
}
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub enum OsError {
|
|
CGError(core_graphics::base::CGError),
|
|
CreationError(&'static str),
|
|
}
|
|
|
|
impl fmt::Display for OsError {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
OsError::CGError(e) => f.pad(&format!("CGError {e}")),
|
|
OsError::CreationError(e) => f.pad(e),
|
|
}
|
|
}
|
|
}
|