Oh, hang on… I bet I need to wrap the moves in a begin/end updates block. I’ll try that now.
— Charles Jenkins On Sunday, January 4, 2015 at 8:22 AM, Charles Jenkins wrote: > Quincy: > > Thanks for the answer! But something is still missing... > > moveItemAtIndex:… does indeed move the items around to the proper places in > the tree, but the outline view control doesn’t update disclosure triangles. > Meaning, if I drag an item’s only child someplace else, the now-childless > parent keeps its useless disclosure triangle. Worse, if I drop a new child > onto an item that formerly did not have children, the needed disclosure > triangle doesn’t appear, and then there’s no way in that session to > manipulate the child item again. > > Is there a way to indicate that disclosure triangles and item icons should be > updated after the move animation ends? > > — > > Charles Jenkins > > > On Saturday, January 3, 2015 at 3:33 PM, Quincey Morris wrote: > > > On Jan 3, 2015, at 12:13 , Charles Jenkins <cejw...@gmail.com > > (mailto: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