From bafd62d42d3ebba2d5260373bee8d3938cf364a9 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Wed, 25 Jan 2012 17:25:23 +0100 Subject: [PATCH] CPCollectionView Implemented - (CPView)draggingViewForItemsAtIndexes:(CPIndexSet)indexes withEvent:(CPEvent)event offset:(CGPoint)dragImageOffset and the corresponding delegate method from where you can ask for the default dragged view. Multiple selection not implemented yet. --- AppKit/CPCollectionView.j | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/AppKit/CPCollectionView.j b/AppKit/CPCollectionView.j index ec57e1b69..66cd05e09 100644 --- a/AppKit/CPCollectionView.j +++ b/AppKit/CPCollectionView.j @@ -695,26 +695,37 @@ var dragTypes = [_delegate collectionView:self dragTypesForItemsAtIndexes:_selectionIndexes]; [[CPPasteboard pasteboardWithName:CPDragPboard] declareTypes:dragTypes owner:self]; - - if (!_itemForDragging) - _itemForDragging = [self newItemForRepresentedObject:_content[[_selectionIndexes firstIndex]]]; + + var dragImageOffset = CGSizeMakeZero(), + view; + + if ([_delegate respondsToSelector:@selector(collectionView:draggingViewForItemsAtIndexes:withEvent:offset:)]) + view = [_delegate collectionView:self draggingViewForItemsAtIndexes:_selectionIndexes withEvent:_mouseDownEvent offset:dragImageOffset]; else - [_itemForDragging setRepresentedObject:_content[[_selectionIndexes firstIndex]]]; - - var view = [_itemForDragging view]; + view = [self draggingViewForItemsAtIndexes:_selectionIndexes withEvent:_mouseDownEvent offset:dragImageOffset]; [view setFrameSize:_itemSize]; [view setAlphaValue:0.7]; [self dragView:view at:[[_items[[_selectionIndexes firstIndex]] view] frame].origin - offset:CGSizeMakeZero() + offset:dragImageOffset event:_mouseDownEvent pasteboard:nil source:self slideBack:YES]; } +- (CPView)draggingViewForItemsAtIndexes:(CPIndexSet)indexes withEvent:(CPEvent)event offset:(CGPoint)dragImageOffset +{ + if (!_itemForDragging) + _itemForDragging = [self newItemForRepresentedObject:_content[0]]; + else + [_itemForDragging setRepresentedObject:_content[[indexes firstIndex]]]; + + return [_itemForDragging view]; +} + /*! Places the selected items on the specified pasteboard. The items are requested from the collection's delegate. @param aPasteboard the pasteboard to put the items on