|
@@ -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;
|
|
@@ -833,6 +869,7 @@ static int translateKey(unsigned int key)
|
|
|
|
|
|
@implementation GodotWindow
|
|
|
|
|
|
+
|
|
|
- (BOOL)canBecomeKeyWindow
|
|
|
{
|
|
|
// Required for NSBorderlessWindowMask windows
|