diff --git a/winit-appkit/src/window_delegate.rs b/winit-appkit/src/window_delegate.rs index 980ad63276..eb1f9d3697 100644 --- a/winit-appkit/src/window_delegate.rs +++ b/winit-appkit/src/window_delegate.rs @@ -1279,8 +1279,9 @@ impl WindowDelegate { #[inline] pub fn drag_window(&self) -> Result<(), RequestError> { let mtm = MainThreadMarker::from(self); - let event = - NSApplication::sharedApplication(mtm).currentEvent().ok_or(RequestError::Ignored)?; + let event = NSApplication::sharedApplication(mtm) + .currentEvent() + .ok_or(NotSupportedError::new("event no longer current"))?; self.window().performWindowDragWithEvent(&event); Ok(()) } diff --git a/winit-core/src/error.rs b/winit-core/src/error.rs index d9857acd56..19fb6a682e 100644 --- a/winit-core/src/error.rs +++ b/winit-core/src/error.rs @@ -57,8 +57,6 @@ impl From for EventLoopError { pub enum RequestError { /// The request is not supported. NotSupported(NotSupportedError), - /// The request was ignored by the operating system. - Ignored, /// Got unspecified OS specific error during the request. Os(OsError), } @@ -67,7 +65,6 @@ impl Display for RequestError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::NotSupported(err) => err.fmt(f), - Self::Ignored => write!(f, "The request was ignored"), Self::Os(err) => err.fmt(f), } } @@ -90,6 +87,15 @@ impl From for RequestError { } } +impl From for EventLoopError { + fn from(value: RequestError) -> Self { + match value { + RequestError::NotSupported(err) => EventLoopError::NotSupported(err), + RequestError::Os(err) => EventLoopError::Os(err), + } + } +} + /// The requested operation is not supported. #[derive(Debug)] pub struct NotSupportedError { diff --git a/winit-core/src/event.rs b/winit-core/src/event.rs index 24a80990bc..c5f015472f 100644 --- a/winit-core/src/event.rs +++ b/winit-core/src/event.rs @@ -11,7 +11,7 @@ use serde::{Deserialize, Serialize}; use smol_str::SmolStr; use crate::Instant; -use crate::error::RequestError; +use crate::error::{NotSupportedError, RequestError}; use crate::event_loop::AsyncRequestSerial; use crate::keyboard::{self, ModifiersKeyState, ModifiersKeys, ModifiersState}; #[cfg(doc)] @@ -1498,7 +1498,7 @@ impl SurfaceSizeWriter { *inner.lock().unwrap() = new_surface_size; Ok(()) } else { - Err(RequestError::Ignored) + Err(NotSupportedError::new("request closed").into()) } } @@ -1507,7 +1507,7 @@ impl SurfaceSizeWriter { if let Some(inner) = self.new_surface_size.upgrade() { Ok(*inner.lock().unwrap()) } else { - Err(RequestError::Ignored) + Err(NotSupportedError::new("request closed").into()) } } } diff --git a/winit-x11/src/window.rs b/winit-x11/src/window.rs index 5aa1dbaf8a..d00b3a11ef 100644 --- a/winit-x11/src/window.rs +++ b/winit-x11/src/window.rs @@ -1978,11 +1978,11 @@ impl UnownedWindow { }) } let region = RegionWrapper::create_region(self.xconn.xcb_connection(), &rectangles) - .map_err(|_e| RequestError::Ignored)?; + .map_err(|err| os_error!(X11Error::from(err)))?; self.xconn .xcb_connection() .xfixes_set_window_shape_region(self.xwindow, SK::INPUT, 0, 0, region.region()) - .map_err(|_e| RequestError::Ignored)?; + .map_err(|err| os_error!(X11Error::from(err)))?; self.shared_state_lock().cursor_hittest = Some(hittest); Ok(()) }