Fixed: if CPArrayController setPreserveSelection was off and a selected item disappeared, an invalid selection state could occur. The error was caused by a slightly overeager early-out optimisation in __setSelectionIndexes.

This commit is contained in:
Alexander Ljungberg
2010-09-04 22:12:08 -04:00
parent c489909542
commit e704d42adb
2 changed files with 22 additions and 3 deletions
+3 -3
View File
@@ -363,9 +363,6 @@
if (!indexes)
indexes = [CPIndexSet indexSet];
if ([_selectionIndexes isEqualToIndexSet:indexes])
return NO;
if (![indexes count])
{
if(_avoidsEmptySelection && [[self arrangedObjects] count])
@@ -381,6 +378,9 @@
indexes = [CPIndexSet indexSetWithIndex:objectsCount-1];
}
if ([_selectionIndexes isEqualToIndexSet:indexes])
return NO;
_selectionIndexes = [indexes copy];
// Push back the new selection to the model for selectionIndexes if we have one.