mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-09-01 16:33:35 +00:00
Merge branch 'master' of git://github.com/280north/cappuccino
This commit is contained in:
@@ -335,7 +335,7 @@
|
||||
{
|
||||
var objects = [[self arrangedObjects] objectsAtIndexes:[self selectionIndexes]];
|
||||
|
||||
return objects || [_CPObservableArray array];
|
||||
return [_CPObservableArray arrayWithArray:(objects || [])];
|
||||
}
|
||||
|
||||
- (BOOL)setSelectedObjects:(CPArray)objects
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user