Merge remote branch 'klaaspieter/fix/784-cparraycontroller-selection'

This commit is contained in:
Alexander Ljungberg
2010-08-13 14:00:27 -04:00
4 changed files with 194 additions and 12 deletions
+39 -12
View File
@@ -365,29 +365,29 @@
//Moving selection
-(BOOL)canSelectPrevious
- (BOOL)canSelectPrevious
{
return [[self selectionIndexes] firstIndex] > 0
}
-(BOOL)canSelectNext
-(void)selectPrevious:(id)sender
{
return [[self selectionIndexes] firstIndex] < [[self arrangedObjects] count] -1;
}
var index = [[self selectionIndexes] firstIndex] - 1;
-(void)selectNext:(id)sender
{
var index = [[self selectionIndexes] firstIndex] + 1 || 0;
if (index < [[self arrangedObjects] count])
if (index >= 0)
[self setSelectionIndexes:[CPIndexSet indexSetWithIndex:index]];
}
-(void)selectPrevious:(id)sender
- (BOOL)canSelectNext
{
var index = [[self selectionIndexes] firstIndex] - 1 || [[self arrangedObjects] count] - 1;
return [[self selectionIndexes] firstIndex] < [[self arrangedObjects] count] - 1;
}
if (index >= 0)
- (void)selectNext:(id)sender
{
var index = [[self selectionIndexes] firstIndex] + 1;
if (index < [[self arrangedObjects] count])
[self setSelectionIndexes:[CPIndexSet indexSetWithIndex:index]];
}
@@ -431,6 +431,33 @@
[self rearrangeObjects];
}
- (void)insertObject:(id)anObject atArrangedObjectIndex:(int)anIndex
{
if (![self canAdd])
return;
[self willChangeValueForKey:@"content"];
[_contentObject insertObject:anObject atIndex:anIndex];
[self didChangeValueForKey:@"content"];
if (_clearsFilterPredicateOnInsertion)
[self setFilterPredicate:nil];
[[self arrangedObjects] insertObject:anObject atIndex:anIndex];
if ([self selectsInsertedObjects])
[self setSelectionIndex:anIndex];
else
{
[self willChangeValueForKey:@"selectionIndexes"]
[[self selectionIndexes] shiftIndexesStartingAtIndex:anIndex by:1];
[self didChangeValueForKey:@"selectionIndexes"];
}
if ([self avoidsEmptySelection] && [[self selectionIndexes] count] <= 0 && [_contentObject count] > 0)
[self setSelectionIndexes:[CPIndexSet indexSetWithIndex:0]];
}
- (void)removeObject:(id)object
{
if (![self canRemove])