Roger Gilbrat
Roger Gilbrat

Reputation: 3835

NSWindow won't accept drag and dropped files

I'm trying to get a window I've created to accept files dropped onto it from the finder and all that happens when I try and drag a file onto the window is it snaps back to where it was on the desktop. Clearly I'm not setting something up right.

Inside the NSWindowController:initWithWindow: I'm doing:

    [self.window registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]]; 

I've tried putting this line in the view as well and no luck. What am I missing? Is there something I need to set in the .xib file as well?

Where do I need to put the -(BOOL)performDragOperation: function? Is that in my custom NSWindowController class? Is that what is failing?

Upvotes: 0

Views: 2037

Answers (1)

Joshua Nozzi
Joshua Nozzi

Reputation: 61228

Have you followed (or read) the documentation? The relevant section is titled "Receiving Drag Operations.

Most importantly, for a general view (or window), you need to implement -draggingEntered: as a first step and return the proper NSDragOperation (or at least not NSDragOperationNone) to "validate" the proposed drop. Without answering this, a drop won't even be allowed (so you'll never receive -prepareForDragOperation:, -performDragOperation: or -concludeDragOperation:).

Something else to consider: Do you really want the whole window to act as the dragging destination? More often, it's best to use a specific view that gives visual feedback to the user when -draggingUpdated: is called.

Upvotes: 1

Related Questions