From cbae4af38a7a5b28598ccd8a165f379ed927913c Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 3 Jun 2016 19:21:22 +0200 Subject: [PATCH] (OSX) Add preliminary drag and drop code --- ui/drivers/cocoa/cocoa_common.m | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/ui/drivers/cocoa/cocoa_common.m b/ui/drivers/cocoa/cocoa_common.m index e21032eb7a..8b1aaf4606 100644 --- a/ui/drivers/cocoa/cocoa_common.m +++ b/ui/drivers/cocoa/cocoa_common.m @@ -64,6 +64,7 @@ void *glkitview_init(void); #if defined(HAVE_COCOA) [self setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; + [self registerForDraggedTypes:[NSArray arrayWithObjects:NSColorPboardType, NSFilenamesPboardType, nil]]; #elif defined(HAVE_COCOATOUCH) self.view = (__bridge GLKView*)glkitview_init(); @@ -96,6 +97,41 @@ void *glkitview_init(void); { } +- (NSDragOperation)draggingEntered:(id )sender +{ + NSDragOperation sourceDragMask = [sender draggingSourceOperationMask]; + NSPasteboard *pboard = [sender draggingPasteboard]; + + if ( [[pboard types] containsObject:NSFilenamesPboardType] ) + { + if (sourceDragMask & NSDragOperationCopy) + return NSDragOperationCopy; + } + + return NSDragOperationNone; +} + +- (BOOL)performDragOperation:(id)sender +{ + NSPasteboard *pboard = [sender draggingPasteboard]; + + if ( [[pboard types] containsObject:NSURLPboardType]) + { + NSURL *fileURL = [NSURL URLFromPasteboard:pboard]; + NSString *s = [fileURL path]; + if (s != nil) + { + RARCH_LOG("Drop name is: %s\n", [s UTF8String]); + } + } + return YES; +} + +- (void)draggingExited:(id )sender +{ + [self setNeedsDisplay: YES]; +} + #elif defined(HAVE_COCOATOUCH) - (void)viewDidAppear:(BOOL)animated {