On Sat, Oct 29, 2011 at 1:18 PM, Koen van der Drift <koenvanderdr...@gmail.com> wrote: > I'm setting up drag and drop for my NSOutlineView and I want to prevent > parents being dropped on one of their children. The parent and children are > all of the Group entity. I understand I need to do this in the > outlineView:validatedrop method. I think I need to create an NSFetchRequest > with the NSPredictate to get all the children of the parent, but I don't know > what the predicate should be.
If your outline view is set up such that children are descendant items of their parents, you don't even need to round-trip to the model layer. You could implement something like the following: // Warning: typed in Mail, not guaranteed to work - (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id < NSDraggingInfo >)info proposedItem:(id)item proposedChildIndex:(NSInteger)index { NSArray *draggingItems = ItemsFromDragInfo(info); NSMutableSet *parentTree = [[NSMutableSet alloc] init]; id parentItem = item; while (parentItem) { [parentTree addObject:item]; parentItem = [outlineView parentForItem:item]; } NSDragOperation op = NSDragOperationMove; for (id item in draggingItems) { if ([parentTree containsobject:item]) { op = NSDragOperationNone; break; } } [parentTree release]; return op; } --Kyle Sluder _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com