Make DeviceId simpler on iOS (#3402)
This previously contained a UIScreen for some weird reason; perhaps because `DeviceId` was confused for `UIDevice`?
This commit is contained in:
parent
6df972d108
commit
41070d7c67
2 changed files with 12 additions and 16 deletions
|
|
@ -68,6 +68,8 @@ mod window;
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
|
use crate::event::DeviceId as RootDeviceId;
|
||||||
|
|
||||||
pub(crate) use self::{
|
pub(crate) use self::{
|
||||||
event_loop::{
|
event_loop::{
|
||||||
EventLoop, EventLoopProxy, EventLoopWindowTarget, OwnedDisplayHandle,
|
EventLoop, EventLoopProxy, EventLoopWindowTarget, OwnedDisplayHandle,
|
||||||
|
|
@ -76,28 +78,25 @@ pub(crate) use self::{
|
||||||
monitor::{MonitorHandle, VideoModeHandle},
|
monitor::{MonitorHandle, VideoModeHandle},
|
||||||
window::{PlatformSpecificWindowBuilderAttributes, Window, WindowId},
|
window::{PlatformSpecificWindowBuilderAttributes, Window, WindowId},
|
||||||
};
|
};
|
||||||
|
|
||||||
use self::uikit::UIScreen;
|
|
||||||
pub(crate) use crate::cursor::NoCustomCursor as PlatformCustomCursor;
|
pub(crate) use crate::cursor::NoCustomCursor as PlatformCustomCursor;
|
||||||
pub(crate) use crate::cursor::NoCustomCursor as PlatformCustomCursorBuilder;
|
pub(crate) use crate::cursor::NoCustomCursor as PlatformCustomCursorBuilder;
|
||||||
pub(crate) use crate::icon::NoIcon as PlatformIcon;
|
pub(crate) use crate::icon::NoIcon as PlatformIcon;
|
||||||
pub(crate) use crate::platform_impl::Fullscreen;
|
pub(crate) use crate::platform_impl::Fullscreen;
|
||||||
|
|
||||||
|
/// There is no way to detect which device that performed a certain event in
|
||||||
|
/// UIKit (i.e. you can't differentiate between different external keyboards,
|
||||||
|
/// or wether it was the main touchscreen, assistive technologies, or some
|
||||||
|
/// other pointer device that caused a touch event).
|
||||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
pub struct DeviceId {
|
pub struct DeviceId;
|
||||||
uiscreen: *const UIScreen,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl DeviceId {
|
impl DeviceId {
|
||||||
pub const unsafe fn dummy() -> Self {
|
pub const unsafe fn dummy() -> Self {
|
||||||
DeviceId {
|
DeviceId
|
||||||
uiscreen: std::ptr::null(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Send for DeviceId {}
|
pub(crate) const DEVICE_ID: RootDeviceId = RootDeviceId(DeviceId);
|
||||||
unsafe impl Sync for DeviceId {}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct KeyEventExtra {}
|
pub struct KeyEventExtra {}
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,12 @@ use super::uikit::{
|
||||||
use super::window::WindowId;
|
use super::window::WindowId;
|
||||||
use crate::{
|
use crate::{
|
||||||
dpi::PhysicalPosition,
|
dpi::PhysicalPosition,
|
||||||
event::{DeviceId as RootDeviceId, Event, Force, Touch, TouchPhase, WindowEvent},
|
event::{Event, Force, Touch, TouchPhase, WindowEvent},
|
||||||
platform::ios::ValidOrientations,
|
platform::ios::ValidOrientations,
|
||||||
platform_impl::platform::{
|
platform_impl::platform::{
|
||||||
ffi::{UIRectEdge, UIUserInterfaceIdiom},
|
ffi::{UIRectEdge, UIUserInterfaceIdiom},
|
||||||
window::PlatformSpecificWindowBuilderAttributes,
|
window::PlatformSpecificWindowBuilderAttributes,
|
||||||
DeviceId, Fullscreen,
|
Fullscreen, DEVICE_ID,
|
||||||
},
|
},
|
||||||
window::{WindowAttributes, WindowId as RootWindowId},
|
window::{WindowAttributes, WindowId as RootWindowId},
|
||||||
};
|
};
|
||||||
|
|
@ -199,7 +199,6 @@ impl WinitView {
|
||||||
|
|
||||||
fn handle_touches(&self, touches: &NSSet<UITouch>) {
|
fn handle_touches(&self, touches: &NSSet<UITouch>) {
|
||||||
let window = self.window().unwrap();
|
let window = self.window().unwrap();
|
||||||
let uiscreen = window.screen();
|
|
||||||
let mut touch_events = Vec::new();
|
let mut touch_events = Vec::new();
|
||||||
let os_supports_force = app_state::os_capabilities().force_touch;
|
let os_supports_force = app_state::os_capabilities().force_touch;
|
||||||
for touch in touches {
|
for touch in touches {
|
||||||
|
|
@ -252,9 +251,7 @@ impl WinitView {
|
||||||
touch_events.push(EventWrapper::StaticEvent(Event::WindowEvent {
|
touch_events.push(EventWrapper::StaticEvent(Event::WindowEvent {
|
||||||
window_id: RootWindowId(window.id()),
|
window_id: RootWindowId(window.id()),
|
||||||
event: WindowEvent::Touch(Touch {
|
event: WindowEvent::Touch(Touch {
|
||||||
device_id: RootDeviceId(DeviceId {
|
device_id: DEVICE_ID,
|
||||||
uiscreen: Id::as_ptr(&uiscreen),
|
|
||||||
}),
|
|
||||||
id: touch_id,
|
id: touch_id,
|
||||||
location: physical_location,
|
location: physical_location,
|
||||||
force,
|
force,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue