Thanks Kyle, I'll try to apply that. In the meantime, I also found the AbstractView sample code which does something similar. I'll see which one fits my code better.
- Koen. On Oct 29, 2011, at 5:34 PM, Kyle Sluder wrote: > 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