TableView:

Set a CPThemeStateHighlighted for both selecting and sorting.
Do not change sort descriptors when selecting with a modifier flag.

Conflicts:

	AppKit/CPTableView.j
This commit is contained in:
Randall Luecke
2010-02-14 21:33:20 -05:00
parent 5131aff352
commit 4237000fc9
3 changed files with 43 additions and 39 deletions
+5 -12
View File
@@ -56,9 +56,9 @@ var CPThemeStatePressed = CPThemeState("pressed");
{
var themeState = [self themeState];
if((themeState & CPThemeStateSelected || themeState & CPThemeStateHighlighted) && (themeState & CPThemeStatePressed))
if(themeState & CPThemeStateHighlighted && themeState & CPThemeStatePressed)
[self setBackgroundColor:[CPColor colorWithPatternImage:CPAppKitImage("tableview-headerview-highlighted-pressed.png", CGSizeMake(1.0, 22.0))]];
else if (themeState & CPThemeStateSelected || themeState & CPThemeStateHighlighted)
else if (themeState & CPThemeStateHighlighted)
[self setBackgroundColor:[CPColor colorWithPatternImage:CPAppKitImage("tableview-headerview-highlighted.png", CGSizeMake(1.0, 22.0))]];
else if (themeState & CPThemeStatePressed)
[self setBackgroundColor:[CPColor colorWithPatternImage:CPAppKitImage("tableview-headerview-pressed.png", CGSizeMake(1.0, 22.0))]];
@@ -230,18 +230,11 @@ var CPThemeStatePressed = CPThemeState("pressed");
var location = [self convertPoint:[theEvent locationInWindow] fromView:nil],
clickedColumn = [self columnAtPoint:location];
[self _setPressedColumn:CPNotFound];
[self _setPressedColumn:-1];
if (clickedColumn == -1)
return;
if (clickedColumn != -1)
[_tableView _didClickTableColumn:clickedColumn modifierFlags:[theEvent modifierFlags]];
[_tableView _sendDelegateDidClickColumn:clickedColumn];
if ([_tableView allowsColumnSelection])
[_tableView _selectTableColumn:clickedColumn modifierFlags:[theEvent modifierFlags]];
[_tableView _changeSortDescriptorsForClickOnColumn:clickedColumn];
return;
}
/*
+37 -26
View File
@@ -829,7 +829,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
[dataViewsInTableColumn makeObjectsPerformSelector:@selector(unsetThemeState:) withObject:CPThemeStateHighlighted];
var headerView = [_tableColumns[columnIndex] headerView];
[headerView unsetThemeState:CPThemeStateSelected];
[headerView unsetThemeState:CPThemeStateHighlighted];
}
count = selectColumns.length;
@@ -841,32 +841,10 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
[dataViewsInTableColumn makeObjectsPerformSelector:@selector(setThemeState:) withObject:CPThemeStateHighlighted];
var headerView = [_tableColumns[columnIndex] headerView];
[headerView setThemeState:CPThemeStateSelected];
[headerView setThemeState:CPThemeStateHighlighted];
}
}
- (void)_selectTableColumn:(int)clickedColumn modifierFlags:(unsigned)modifierFlags
{
if (modifierFlags & CPCommandKeyMask)
{
if ([self isColumnSelected:clickedColumn])
[self deselectColumn:clickedColumn];
else if ([self allowsMultipleSelection] == YES)
[self selectColumnIndexes:[CPIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:YES];
}
else if (modifierFlags & CPShiftKeyMask)
{
// should be from clickedColumn to lastClickedColum with extending:(direction == previous selection)
var selectedIndexes = [self selectedColumnIndexes],
startColumn = MIN(clickedColumn, [selectedIndexes lastIndex]),
endColumn = MAX(clickedColumn, [selectedIndexes firstIndex]);
[self selectColumnIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(startColumn, endColumn - startColumn + 1)] byExtendingSelection:YES];
}
else
[self selectColumnIndexes:[CPIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:NO];
}
- (CPIndexSet)selectedColumnIndexes
{
return _selectedColumnIndexes;
@@ -1593,6 +1571,38 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
[_dataSource tableView:self sortDescriptorsDidChange:oldDescriptors];
}
- (void)_didClickTableColumn:(int)clickedColumn modifierFlags:(unsigned)modifierFlags
{
[self _sendDelegateDidClickColumn:clickedColumn];
if (_allowsColumnSelection)
{
if (modifierFlags & CPCommandKeyMask)
{
if ([self isColumnSelected:clickedColumn])
[self deselectColumn:clickedColumn];
else if ([self allowsMultipleSelection] == YES)
[self selectColumnIndexes:[CPIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:YES];
return;
}
else if (modifierFlags & CPShiftKeyMask)
{
// should be from clickedColumn to lastClickedColum with extending:(direction == previous selection)
var startColumn = MIN(clickedColumn, [_selectedColumnIndexes lastIndex]),
endColumn = MAX(clickedColumn, [_selectedColumnIndexes firstIndex]);
[self selectColumnIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(startColumn, endColumn - startColumn + 1)] byExtendingSelection:YES];
return;
}
else
[self selectColumnIndexes:[CPIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:NO];
}
[self _changeSortDescriptorsForClickOnColumn:clickedColumn];
}
// From GNUSTEP
- (void)_changeSortDescriptorsForClickOnColumn:(int)column
{
@@ -2299,7 +2309,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
if ([self selectionHighlightStyle] === CPTableViewSelectionHighlightStyleSourceList)
[[CPColor selectionColorSourceView] setFill];
else
[[CPColor selectionColor] setFill];
[[CPColor alternateSelectedControlColor] setFill];
var context = [[CPGraphicsContext currentContext] graphicsPort],
indexes = [],
@@ -3153,7 +3163,8 @@ var CPTableViewDataSourceKey = @"CPTableViewDataSourceKey",
[aCoder encodeFloat:_rowHeight forKey:CPTableViewRowHeightKey];
[aCoder encodeSize:_intercellSpacing forKey:CPTableViewIntercellSpacingKey];
[aCoder encodeInt:_gridStyleMask forKey:CPGridStyleMask];
[aCoder encodeBool:_allowsMultipleSelection forKey:CPTableViewMultipleSelectionKey];
[aCoder encodeBool:_allowsEmptySelection forKey:CPTableViewEmptySelectionKey];
[aCoder encodeBool:_allowsColumnReordering forKey:CPTableViewColumnReorderingKey];
+1 -1
View File
@@ -41,7 +41,7 @@ CPLogRegister(CPLogConsole);
[tableView setUsesAlternatingRowBackgroundColors:YES];
[tableView setAlternatingRowBackgroundColors:[[CPColor whiteColor], [CPColor colorWithHexString:@"e4e7ff"], [CPColor colorWithHexString:@"f4e7ff"]]];
[tableView setGridStyleMask:CPTableViewSolidHorizontalGridLineMask | CPTableViewSolidVerticalGridLineMask];
// [tableView setBackgroundColor:[CPColor blueColor]];
var iconView = [[CPImageView alloc] initWithFrame:CGRectMake(16,16,0,0)];