diff --git a/AppKit/CPTableHeaderView.j b/AppKit/CPTableHeaderView.j index b3bcdf8d0..8add8cbed 100644 --- a/AppKit/CPTableHeaderView.j +++ b/AppKit/CPTableHeaderView.j @@ -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; } /* diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 911b06f0e..fde52bd8c 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -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]; diff --git a/Tests/Manual/TableTest/AppController.j b/Tests/Manual/TableTest/AppController.j index d4045eb5b..25e6af36f 100644 --- a/Tests/Manual/TableTest/AppController.j +++ b/Tests/Manual/TableTest/AppController.j @@ -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)];