KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
You know that effect when you drag out an item from the dock and that cloud drag cursor appears and when you let go it disappears with a poof effect? Similarly, in Xcode when you drag a breakpoint outside the line number gutter the same happens. I would like to implement the same effect in my application but can't find the right way. I have an NSImageView descendant to implement the NSDraggingSource and NSDraggingDestination protocols. I have several instances of this view which allow to drag their content between the others (a copy operation takes place in this scenario, but that's only relevant to show I have drag'n drop implmented and fully working for standard tasks). Now, when I drag out an image from its view to anywhere (except another view instance) I want to have the delete operation taking place on drop. However the drag operation is fully controlled by the target view. I could manage to make them respond the way I want (even though this would be a lot of work), but it fails completely if I'm dragging outside my application. If I could get the delete drag operation I could handle this however easily by: - (void)draggedImage: (NSImage *)image endedAt: (NSPoint)screenPoint operation: (NSDragOperation)operation { if (operation == NSDragOperationDelete) { NSRect rect = [self.window convertRectToScreen: [self convertRect: self.frame fromView: nil]]; NSShowAnimationEffect(NSAnimationEffectPoof, rect.origin, self.bounds.size, nil, nil, NULL); } } I tried already to set the delete cursor like this: - (void)draggingSession: (NSDraggingSession *)session movedToPoint: (NSPoint)screenPoint { if (!NSPointInRect(screenPoint, self.window.frame)) { [[NSCursor disappearingItemCursor] set]; } } (for simplicity this is for the entire windw at the moment). This works as long as I don't hit the desktop
Tags (comma-separated)
Save Edits
Cancel