diff --git a/gpui/src/platform/mac/platform.rs b/gpui/src/platform/mac/platform.rs index 7e973ceacf7389c69be356ecd9a47b4e2d15f04b..dffa2c4a6abb8ac92163a04eeacaae30f1f8f5b9 100644 --- a/gpui/src/platform/mac/platform.rs +++ b/gpui/src/platform/mac/platform.rs @@ -7,7 +7,7 @@ use cocoa::{ NSEventModifierFlags, NSMenu, NSMenuItem, NSModalResponse, NSOpenPanel, NSPasteboard, NSPasteboardTypeString, NSSavePanel, NSWindow, }, - base::{id, nil, selector}, + base::{id, nil, selector, YES}, foundation::{NSArray, NSAutoreleasePool, NSData, NSInteger, NSString, NSURL}, }; use ctor::ctor; @@ -283,10 +283,12 @@ impl platform::Platform for MacPlatform { let urls = panel.URLs(); for i in 0..urls.count() { let url = urls.objectAtIndex(i); - let path = std::ffi::CStr::from_ptr(url.path().UTF8String()) - .to_string_lossy() - .to_string(); - result.push(PathBuf::from(path)); + if url.isFileURL() == YES { + let path = std::ffi::CStr::from_ptr(url.path().UTF8String()) + .to_string_lossy() + .to_string(); + result.push(PathBuf::from(path)); + } } Some(result) } else { @@ -317,10 +319,14 @@ impl platform::Platform for MacPlatform { let block = ConcreteBlock::new(move |response: NSModalResponse| { let result = if response == NSModalResponse::NSModalResponseOk { let url = panel.URL(); - let path = std::ffi::CStr::from_ptr(url.path().UTF8String()) - .to_string_lossy() - .to_string(); - Some(PathBuf::from(path)) + if url.isFileURL() == YES { + let path = std::ffi::CStr::from_ptr(url.path().UTF8String()) + .to_string_lossy() + .to_string(); + Some(PathBuf::from(path)) + } else { + None + } } else { None };