On Jan 3, 2015, at 12:13 , Charles Jenkins <cejw...@gmail.com> wrote: > > These things work, and I can verify that the object graph in the model has > changed correctly. But to see the changes reflected in my Source View, I have > to collapse and re-expand the affected nodes in order to have them reload > data from the model in its new state. (I’m kind of surprised that updating > the outline isn’t automatically done as a result of successfully accepting an > NSDragOperationMove.)
The outline view doesn’t know the semantics of the move. All you’ve done, at the validation stage, is decide what kind of *feedback* to give to the user. > Is it a good idea to call reload functions from > outlineView:acceptDrop:item:childIndex:, or should I be doing something else > to update the outline? Something else. There are these methods that you use (in acceptDrop) to tell the outline view the semantics of what the drop did: moveItemAtIndex:… insertItemsAtIndexes:… removeItemsAtIndexes:… By using combinations of these, you can avoid a reload. (Reloads essentially throw away information and re-acquire it. These methods describe the changes without loss of current state information.) The effects of these methods are batched and deferred to a later iteration of the run loop, and they also have the benefit of allowing the outline view to animate the changes nicely, which a reload can’t do. _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com