On 2013/07/12, at 10:49, Graham Cox <graham....@bigpond.com> wrote:

> 
> On 12/07/2013, at 10:35 AM, dangerwillrobinsondan...@gmail.com wrote:
> 
>> However, based on the way I have simply put the row selection indexes 
>> NSIndexSet into NSData and into the pasteboard, the API as I see it at the 
>> moment (using NSDraggingSession property draggingFormation ) may not work 
>> for me without some additional work.
>> 
>> I wasn't really wanting to put the represented objects of my rows on to the 
>> pasteboard, since NSView and NSTableView do a lot of the dragging API work 
>> already, it may have to be a feature I handle later, it looks like a lot of 
>> work for now, and the API seems spread out amongst a lot of different 
>> classes I am not familiar with… :(
> 
> 
> Is the drag expected to work between different apps or simply within your own 
> app?
Both. 
Internal for reordering rows for now. 

But will be adding drag to move and drag to copy between collections, as well 
as drag to external for copying a text or image representation. 
> 
> If the latter, there is no reason to put anything on the pasteboard other 
> than enough dummy data to identify the drag (usually your private drag type 
> and an empty string are enough). When you start the drag, put the real data 
> somewhere accessible, such as a class method. When you receive the drag and 
> identify it as this private type, use the class method to get the data. That 
> data can be the original index set for example (though as far as I can see 
> there's nothing to stop you putting the index set on the pasteboard directly, 
> not sure why you need to convert to NSData).
Hadn't thought of it that way. Examples of drag to reorder that I saw all used 
NSData IIRC. ...

> 
> The point is that the drag APIs standardise the visual side of the process, 
> but do not force you to use the data side of the process unless the objective 
> is to pass data between apps. Particularly for table reordering or dragging 
> in and out of tables, it's often much easier to bypass the data side of the 
> drag manager. Putting your actual objects on the pasteboard is a waste of 
> time, since they're only going to be converted back again in a different 
> place within the same app.
Good perspective!
This makes it really like the drag op destination is a manually initiated 
notification in my mind. 
I will give this a try as it promises to clean up some unnecessary code. 
But to support the other kinds of drag ops, I may need to go with a heavier 
weight pasteboard entry? ( since there's no way to preemptively know the 
destination)

I still want to control the drag image in any drag op and have a bit of 
learning and experimenting to do in that space. 
But I will start with one. ;)

Last for polish I need to figure out the animation of row reordering when drag 
is internal. But that's not the highest priority at the moment. 
> 
> --Graham
> 

_______________________________________________

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

Reply via email to