mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-29 11:28:49 +00:00
made the tableview handle hiding and showing of columns properly
This commit is contained in:
1 parent
015aca9165
commit
4ef9202e92
3 files changed
+48
-17
No files matched your search
@@ -348,7 +348,14 @@ CPTableColumnUserResizingMask = 1 << 1;
|
||||
|
||||
- (void)setHidden:(BOOL)shouldBeHidden
|
||||
{
|
||||
shouldBeHidden = !!shouldBeHidden
|
||||
if (_isHidden === shouldBeHidden)
|
||||
return;
|
||||
|
||||
_isHidden = shouldBeHidden;
|
||||
|
||||
[[self headerView] setHidden:shouldBeHidden];
|
||||
[[self tableView] _tableColumnVisibilityDidChange:self];
|
||||
}
|
||||
|
||||
- (BOOL)isHidden
|
||||
|
||||
@@ -187,21 +187,13 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal
|
||||
|
||||
- (CGRect)headerRectOfColumn:(int)aColumnIndex
|
||||
{
|
||||
var tableColumns = [_tableView tableColumns];
|
||||
|
||||
if (aColumnIndex < 0 || aColumnIndex > [tableColumns count])
|
||||
[CPException raise:"invalid" reason:"tried to get headerRectOfColumn: on invalid column"];
|
||||
|
||||
// UPDATE COLUMN RANGES ?
|
||||
var headerRect = [self bounds],
|
||||
columnRect = [[self tableView] rectOfColumn:aColumnIndex];
|
||||
|
||||
var tableRange = _tableView._tableColumnRanges[aColumnIndex],
|
||||
bounds = [self bounds];
|
||||
|
||||
var rMinX = ROUND(tableRange.location);
|
||||
bounds.origin.x = rMinX;
|
||||
bounds.size.width = FLOOR(tableRange.length + tableRange.location - rMinX);
|
||||
headerRect.origin.x = CPRectGetMinX(columnRect);
|
||||
headerRect.size.width = CPRectGetWidth(columnRect);
|
||||
|
||||
return bounds;
|
||||
return headerRect;
|
||||
}
|
||||
|
||||
- (CGRect)_cursorRectForColumn:(int)column
|
||||
|
||||
+36
-4
@@ -690,6 +690,24 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
[self setNeedsLayout];
|
||||
}
|
||||
|
||||
/*!
|
||||
@ignore
|
||||
*/
|
||||
- (void)_tableColumnVisibilityDidChange:(CPTableColumn)aColumn
|
||||
{
|
||||
var columnIndex = [[self tableColumns] indexOfObjectIdenticalTo:aColumn];
|
||||
|
||||
if (_dirtyTableColumnRangeIndex < 0)
|
||||
_dirtyTableColumnRangeIndex = columnIndex;
|
||||
else
|
||||
_dirtyTableColumnRangeIndex = MIN(columnIndex, _dirtyTableColumnRangeIndex);
|
||||
|
||||
[[self headerView] setNeedsLayout];
|
||||
[[self headerView] setNeedsDisplay:YES];
|
||||
|
||||
[self reloadData];
|
||||
}
|
||||
|
||||
- (CPArray)tableColumns
|
||||
{
|
||||
return _tableColumns;
|
||||
@@ -1044,6 +1062,8 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
if (_dirtyTableColumnRangeIndex < 0)
|
||||
return;
|
||||
|
||||
_numberOfHiddenColumns = 0;
|
||||
|
||||
var index = _dirtyTableColumnRangeIndex,
|
||||
count = NUMBER_OF_COLUMNS(),
|
||||
x = index === 0 ? 0.0 : CPMaxRange(_tableColumnRanges[index - 1]);
|
||||
@@ -1053,7 +1073,10 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
var tableColumn = _tableColumns[index];
|
||||
|
||||
if ([tableColumn isHidden])
|
||||
{
|
||||
_numberOfHiddenColumns += 1;
|
||||
_tableColumnRanges[index] = CPMakeRange(x, 0.0);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
@@ -1074,8 +1097,10 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
- (CGRect)rectOfColumn:(CPInteger)aColumnIndex
|
||||
{
|
||||
aColumnIndex = +aColumnIndex;
|
||||
|
||||
var column = [[self tableColumns] objectAtIndex:aColumnIndex];
|
||||
|
||||
if (aColumnIndex < 0 || aColumnIndex >= NUMBER_OF_COLUMNS())
|
||||
if ([column isHidden] || aColumnIndex < 0 || aColumnIndex >= NUMBER_OF_COLUMNS())
|
||||
return _CGRectMakeZero();
|
||||
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
@@ -2042,10 +2067,14 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
columnsCount = columnArray.length;
|
||||
|
||||
for (; columnIndex < columnsCount; ++columnIndex)
|
||||
{
|
||||
{
|
||||
var column = columnArray[columnIndex],
|
||||
tableColumn = _tableColumns[column],
|
||||
tableColumnUID = [tableColumn UID];
|
||||
tableColumn = _tableColumns[column];
|
||||
|
||||
if ([tableColumn isHidden])
|
||||
continue;
|
||||
|
||||
var tableColumnUID = [tableColumn UID];
|
||||
|
||||
if (!_dataViewsForTableColumns[tableColumnUID])
|
||||
_dataViewsForTableColumns[tableColumnUID] = [];
|
||||
@@ -2158,6 +2187,9 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
|
||||
- (void)_enqueueReusableDataView:(CPView)aDataView
|
||||
{
|
||||
if (!aDataView)
|
||||
return;
|
||||
|
||||
// FIXME: yuck!
|
||||
var identifier = aDataView.identifier;
|
||||
|
||||
|
||||
Reference in new issue
Block a user