From 5c853a7cb2f1c68d8bfa04539ca0e2778a13ce43 Mon Sep 17 00:00:00 2001 From: Allan Odgaard Date: Wed, 12 Jul 2017 11:49:00 +0200 Subject: [PATCH] =?UTF-8?q?Handle=20the=20case=20where=20pasteboard=20sele?= =?UTF-8?q?ctor=20returns=20=E2=80=9Cno=20selection=E2=80=9D=20(-1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is based on a bug report which I have been unable to reproduce, as the pasteboard selector should always have one item selected. --- Frameworks/OakAppKit/src/OakPasteboard.mm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Frameworks/OakAppKit/src/OakPasteboard.mm b/Frameworks/OakAppKit/src/OakPasteboard.mm index 6eb062b7..b1dfdb8b 100644 --- a/Frameworks/OakAppKit/src/OakPasteboard.mm +++ b/Frameworks/OakAppKit/src/OakPasteboard.mm @@ -590,16 +590,19 @@ static BOOL HasPersistentStore = NO; [pasteboardSelector setWidth:width]; if(singleClick) [pasteboardSelector setPerformsActionOnSingleClick]; - selectedRow = [pasteboardSelector showAtLocation:location]; - NSSet* keep = [NSSet setWithArray:[pasteboardSelector entries]]; + NSInteger newSelection = [pasteboardSelector showAtLocation:location]; + NSArray* newEntries = [pasteboardSelector entries]; + + NSSet* keep = [NSSet setWithArray:newEntries]; for(OakPasteboardEntry* entry in entries) { if(![keep containsObject:entry]) [entry.managedObjectContext deleteObject:entry]; } - self.currentEntry = [[pasteboardSelector entries] objectAtIndex:selectedRow]; + if(newSelection != -1) + self.currentEntry = [newEntries objectAtIndex:newSelection]; return [pasteboardSelector shouldSendAction]; }