|
@@ -751,28 +751,32 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
|
ERR_FAIL_COND_V(!DS_OSX->windows.has(window_id), NO);
|
|
ERR_FAIL_COND_V(!DS_OSX->windows.has(window_id), NO);
|
|
DisplayServerOSX::WindowData &wd = DS_OSX->windows[window_id];
|
|
DisplayServerOSX::WindowData &wd = DS_OSX->windows[window_id];
|
|
|
|
|
|
- NSPasteboard *pboard = [sender draggingPasteboard];
|
|
|
|
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
|
|
|
|
- NSArray<NSURL *> *filenames = [pboard propertyListForType:NSPasteboardTypeFileURL];
|
|
|
|
-#else
|
|
|
|
- NSArray *filenames = [pboard propertyListForType:NSFilenamesPboardType];
|
|
|
|
-#endif
|
|
|
|
|
|
+ if (!wd.drop_files_callback.is_null()) {
|
|
|
|
+ Vector<String> files;
|
|
|
|
+ NSPasteboard *pboard = [sender draggingPasteboard];
|
|
|
|
|
|
- Vector<String> files;
|
|
|
|
- for (NSUInteger i = 0; i < filenames.count; i++) {
|
|
|
|
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
|
|
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
|
|
- NSString *ns = [[filenames objectAtIndex:i] path];
|
|
|
|
|
|
+ NSArray *items = pboard.pasteboardItems;
|
|
|
|
+ for (NSPasteboardItem *item in items) {
|
|
|
|
+ NSString *path = [item stringForType:NSPasteboardTypeFileURL];
|
|
|
|
+ NSString *ns = [NSURL URLWithString:path].path;
|
|
|
|
+ char *utfs = strdup([ns UTF8String]);
|
|
|
|
+ String ret;
|
|
|
|
+ ret.parse_utf8(utfs);
|
|
|
|
+ free(utfs);
|
|
|
|
+ files.push_back(ret);
|
|
|
|
+ }
|
|
#else
|
|
#else
|
|
- NSString *ns = [filenames objectAtIndex:i];
|
|
|
|
|
|
+ NSArray *filenames = [pboard propertyListForType:NSFilenamesPboardType];
|
|
|
|
+ for (NSString *ns in filenames) {
|
|
|
|
+ char *utfs = strdup([ns UTF8String]);
|
|
|
|
+ String ret;
|
|
|
|
+ ret.parse_utf8(utfs);
|
|
|
|
+ free(utfs);
|
|
|
|
+ files.push_back(ret);
|
|
|
|
+ }
|
|
#endif
|
|
#endif
|
|
- char *utfs = strdup([ns UTF8String]);
|
|
|
|
- String ret;
|
|
|
|
- ret.parse_utf8(utfs);
|
|
|
|
- free(utfs);
|
|
|
|
- files.push_back(ret);
|
|
|
|
- }
|
|
|
|
|
|
|
|
- if (!wd.drop_files_callback.is_null()) {
|
|
|
|
Variant v = files;
|
|
Variant v = files;
|
|
Variant *vp = &v;
|
|
Variant *vp = &v;
|
|
Variant ret;
|
|
Variant ret;
|