diff options
author | marcelofg55 <marcelofg55@gmail.com> | 2016-06-02 18:56:28 -0300 |
---|---|---|
committer | marcelofg55 <marcelofg55@gmail.com> | 2016-06-02 18:56:28 -0300 |
commit | 4e0f2389c3a79f1e558ee13e6d51e7dbe531368e (patch) | |
tree | a8bd2b831ae005a614d2a5c8a56ea4bccec3d59e /platform/osx | |
parent | bb223869e0d016d372d8f3d98b3d5680cc069368 (diff) | |
parent | bc25492e636a82a30d77aa1b37edede0a2a9182f (diff) |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'platform/osx')
-rw-r--r-- | platform/osx/os_osx.mm | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 7a174c233e..1d97ffacb6 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -291,16 +291,52 @@ static int button_mask=0; self = [super init]; trackingArea = nil; [self updateTrackingAreas]; - + [self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]]; return self; } + -(void)dealloc { [trackingArea release]; [super dealloc]; } +- (NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender { + return NSDragOperationCopy; +} + +- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender { + return NSDragOperationCopy; +} + +- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender { + + + NSPasteboard *pboard = [sender draggingPasteboard]; + NSArray *filenames = [pboard propertyListForType:NSFilenamesPboardType]; + + Vector<String> files; + for(int i=0;i<filenames.count;i++) { + NSString *ns = [filenames objectAtIndex:i]; + char *utfs = strdup([ns UTF8String]); + String ret; + ret.parse_utf8(utfs); + free(utfs); + files.push_back(ret); + + + } + + if (files.size()) { + OS_OSX::singleton->main_loop->drop_files(files,0); + OS_OSX::singleton->move_window_to_foreground(); + } + + return NO; +} + + - (BOOL)isOpaque { return YES; @@ -861,6 +897,7 @@ static int translateKey(unsigned int key) @implementation GodotWindow + - (BOOL)canBecomeKeyWindow { // Required for NSBorderlessWindowMask windows |