Merge branch 'master' of git://github.com/280north/cappuccino

This commit is contained in:
Klaas Pieter Annema
2010-07-02 09:25:27 +02:00
3 changed files with 38 additions and 17 deletions
+1 -1
View File
@@ -335,7 +335,7 @@
{
var objects = [[self arrangedObjects] objectsAtIndexes:[self selectionIndexes]];
return objects || [_CPObservableArray array];
return [_CPObservableArray arrayWithArray:(objects || [])];
}
- (BOOL)setSelectedObjects:(CPArray)objects
+1 -1
View File
@@ -263,7 +263,7 @@ var CPBindingOperationAnd = 0,
// CPLog.warn("No binding exposed on "+self+" for "+aBinding);
[self unbind:aBinding];
[[CPKeyValueBinding alloc] initWithBinding:[anObject _replacementKeyPathForBinding:aBinding] name:aBinding to:anObject keyPath:aKeyPath options:options from:self];
[[CPKeyValueBinding alloc] initWithBinding:[self _replacementKeyPathForBinding:aBinding] name:aBinding to:anObject keyPath:aKeyPath options:options from:self];
}
- (CPDictionary)infoForBinding:(CPString)aBinding
+36 -15
View File
@@ -882,6 +882,22 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
[self _noteSelectionDidChange];
}
- (void)_setSelectedRowIndexes:(CPIndexSet)rows
{
var previousSelectedIndexes = [_selectedRowIndexes copy];
_lastSelectedRow = ([rows count] > 0) ? [rows lastIndex] : -1;
_selectedRowIndexes = [rows copy];
[self _updateHighlightWithOldRows:previousSelectedIndexes newRows:_selectedRowIndexes];
[_tableDrawView display]; // FIXME: should be setNeedsDisplayInRect:enclosing rect of new (de)selected rows
// but currently -drawRect: is not implemented here
[[CPKeyValueBinding getBinding:@"selectionIndexes" forObject:self] reverseSetValueFor:@"selectedRowIndexes"];
[self _noteSelectionDidChange];
}
/*!
Sets the row selection using indexes.
@param rows a CPIndexSet of rows to select
@@ -902,20 +918,16 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
[_headerView setNeedsDisplay:YES];
}
var previousSelectedIndexes = [_selectedRowIndexes copy];
var newSelectedIndexes;
if (shouldExtendSelection)
[_selectedRowIndexes addIndexes:rows];
{
newSelectedIndexes = [_selectedRowIndexes copy];
[newSelectedIndexes addIndexes:rows];
}
else
_selectedRowIndexes = [rows copy];
newSelectedIndexes = [rows copy];
// update last selected row
_lastSelectedRow = ([rows count] > 0) ? [rows lastIndex] : -1;
[self _updateHighlightWithOldRows:previousSelectedIndexes newRows:_selectedRowIndexes];
[_tableDrawView display]; // FIXME: should be setNeedsDisplayInRect:enclosing rect of new (de)selected rows
// but currently -drawRect: is not implemented here
[self _noteSelectionDidChange];
[self _setSelectedRowIndexes:newSelectedIndexes];
}
- (void)_updateHighlightWithOldRows:(CPIndexSet)oldRows newRows:(CPIndexSet)newRows
@@ -3427,14 +3439,23 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
@implementation CPTableView (Bindings)
- (CPString)_replacementKeyPathForBinding:(CPString)aBinding
{
if (aBinding === @"selectionIndexes")
return @"selectedRowIndexes";
return [super _replacementKeyPathForBinding:aBinding];
}
- (void)_establishBindingsIfUnbound:(id)destination
{
if ([[self infoForBinding:@"content"] objectForKey:CPObservedObjectKey] !== destination)
{
[self bind:@"content" toObject:destination withKeyPath:@"arrangedObjects" options:nil];
//[self bind:@"sortDescriptors" toObject:destination withKeyPath:@"sortDescriptors" options:nil];
//[self bind:@"selectionIndexes" toObject:destination withKeyPath:@"selectionIndexes" options:nil];
}
if ([[self infoForBinding:@"selectionIndexes"] objectForKey:CPObservedObjectKey] !== destination)
[self bind:@"selectionIndexes" toObject:destination withKeyPath:@"selectionIndexes" options:nil];
//[self bind:@"sortDescriptors" toObject:destination withKeyPath:@"sortDescriptors" options:nil];
}
- (void)setContent:(CPArray)content