diff --git a/winit-appkit/src/window_delegate.rs b/winit-appkit/src/window_delegate.rs index 980ad632..fe4da61e 100644 --- a/winit-appkit/src/window_delegate.rs +++ b/winit-appkit/src/window_delegate.rs @@ -353,13 +353,16 @@ define_class!( use std::path::PathBuf; let pb = sender.draggingPasteboard(); + #[allow(deprecated)] - let filenames = pb - .propertyListForType(unsafe { NSFilenamesPboardType }) - .unwrap() + let property_list = match pb.propertyListForType(unsafe { NSFilenamesPboardType }) { + Some(property_list) => property_list, + None => return false.into(), + }; + + let paths = property_list .downcast::() - .unwrap(); - let paths = filenames + .unwrap() .into_iter() .map(|file| PathBuf::from(file.downcast::().unwrap().to_string())) .collect(); @@ -411,13 +414,16 @@ define_class!( use std::path::PathBuf; let pb = sender.draggingPasteboard(); + #[allow(deprecated)] - let filenames = pb - .propertyListForType(unsafe { NSFilenamesPboardType }) - .unwrap() + let property_list = match pb.propertyListForType(unsafe { NSFilenamesPboardType }) { + Some(property_list) => property_list, + None => return false.into(), + }; + + let paths = property_list .downcast::() - .unwrap(); - let paths = filenames + .unwrap() .into_iter() .map(|file| PathBuf::from(file.downcast::().unwrap().to_string())) .collect(); diff --git a/winit/src/changelog/unreleased.md b/winit/src/changelog/unreleased.md index 63db7610..3bfc2693 100644 --- a/winit/src/changelog/unreleased.md +++ b/winit/src/changelog/unreleased.md @@ -272,3 +272,4 @@ changelog entry. - On Web, device events are emitted regardless of cursor type. - On Wayland, `axis_value120` scroll events now generate `MouseScrollDelta::LineDelta` - On X11, mouse scroll button events no longer cause duplicated `WindowEvent::MouseWheel` events. +- On macOS, fixed crash when dragging non-file content onto window.