#![cfg(target_os = "ios")]
macro_rules! assert_main_thread {
($($t:tt)*) => {
let is_main_thread: ::objc::runtime::BOOL = msg_send!(class!(NSThread), isMainThread);
if is_main_thread == ::objc::runtime::NO {
panic!($($t)*);
}
};
}
mod app_state;
mod clipboard;
mod event_loop;
mod ffi;
mod keycode;
mod monitor;
mod view;
mod window;
use crate::{
accelerator::Accelerator,
menu::{CustomMenuItem, MenuId, MenuItem, MenuType},
};
use std::fmt;
pub use self::{
clipboard::Clipboard,
event_loop::{EventLoop, EventLoopProxy, EventLoopWindowTarget},
keycode::{keycode_from_scancode, keycode_to_scancode},
monitor::{MonitorHandle, VideoMode},
window::{PlatformSpecificWindowBuilderAttributes, Window, WindowId},
};
pub(crate) use crate::icon::{Icon, NoIcon as PlatformIcon};
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
pub struct KeyEventExtra {}
#[derive(Debug, Clone)]
pub struct MenuItemAttributes;
#[derive(Debug, Clone)]
pub struct Menu;
impl Default for Menu {
fn default() -> Self {
Menu::new()
}
}
impl Menu {
pub fn new() -> Self {
Menu {}
}
pub fn new_popup_menu() -> Self {
Self::new()
}
pub fn add_item(
&mut self,
_menu_id: MenuId,
_title: &str,
_accelerator: Option<Accelerator>,
_enabled: bool,
_selected: bool,
_menu_type: MenuType,
) -> CustomMenuItem {
CustomMenuItem(MenuItemAttributes {})
}
pub fn add_submenu(&mut self, _title: &str, _enabled: bool, _submenu: Menu) {}
pub fn add_native_item(
&mut self,
_item: MenuItem,
_menu_type: MenuType,
) -> Option<CustomMenuItem> {
None
}
}
impl MenuItemAttributes {
pub fn id(self) -> MenuId {
MenuId::EMPTY
}
pub fn title(&self) -> String {
"".to_owned()
}
pub fn set_enabled(&mut self, _is_enabled: bool) {}
pub fn set_title(&mut self, _title: &str) {}
pub fn set_selected(&mut self, _is_selected: bool) {}
pub fn set_icon(&mut self, _icon: Icon) {}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct DeviceId {
uiscreen: ffi::id,
}
impl DeviceId {
pub unsafe fn dummy() -> Self {
DeviceId {
uiscreen: std::ptr::null_mut(),
}
}
}
unsafe impl Send for DeviceId {}
unsafe impl Sync for DeviceId {}
#[non_exhaustive]
#[derive(Debug)]
pub enum OsError {}
impl fmt::Display for OsError {
fn fmt(&self, _: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
_ => unreachable!(),
}
}
}