From 2b95621181b5e74d3fd32a92ef32cb3e40c11f0d Mon Sep 17 00:00:00 2001 From: Michael Starke Date: Tue, 6 Nov 2018 12:11:15 +0100 Subject: [PATCH] Converting to modern API for drag and drop --- MacPass/MPEntryTableDataSource.m | 16 +++++----------- MacPass/MPOutlineDataSource.m | 20 +++++++++----------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/MacPass/MPEntryTableDataSource.m b/MacPass/MPEntryTableDataSource.m index bd7f1895..f45c477b 100644 --- a/MacPass/MPEntryTableDataSource.m +++ b/MacPass/MPEntryTableDataSource.m @@ -31,18 +31,12 @@ @implementation MPEntryTableDataSource -- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard { - NSMutableArray *entries = [[NSMutableArray alloc] initWithCapacity:rowIndexes.count]; - [rowIndexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) { - [entries addObject:self.viewController.entryArrayController.arrangedObjects[idx]]; - }]; - for(KPKEntry *entry in entries) { - if(![entry isKindOfClass:[KPKEntry class]]) { - return NO; - } +- (id)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row { + id item = self.viewController.entryArrayController.arrangedObjects[row]; + if([item isKindOfClass:KPKEntry.class]) { + return item; } - [pboard writeObjects:entries]; - return YES; + return nil; } @end diff --git a/MacPass/MPOutlineDataSource.m b/MacPass/MPOutlineDataSource.m index 0c3d4b26..7f3c7bae 100644 --- a/MacPass/MPOutlineDataSource.m +++ b/MacPass/MPOutlineDataSource.m @@ -31,22 +31,20 @@ @property (weak) KPKGroup *localDraggedGroup; @property (weak) KPKEntry *localDraggedEntry; +@property (strong) NSArray *draggedGroups; +@property (strong) NSArray *draggedEntries; + @end @implementation MPOutlineDataSource -- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pasteboard { - if(items.count != 1) { - return NO; +- (id)outlineView:(NSOutlineView *)outlineView pasteboardWriterForItem:(id)item { + id representedObject = [item representedObject]; + if([representedObject isKindOfClass:KPKGroup.class]) { + KPKGroup *group = representedObject; + return group; } - self.localDraggedGroup = nil; - id item = [items.lastObject representedObject]; - if(![item isKindOfClass:KPKGroup.class]) { - return NO; - } - KPKGroup *draggedGroup = item; - [pasteboard writeObjects:@[draggedGroup]]; - return (nil != draggedGroup.parent); + return nil; } - (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id)info proposedItem:(id)item proposedChildIndex:(NSInteger)index {