Add corner views to the table view stuff

This commit is contained in:
Ross Boucher committed 2009-06-25 14:42:30 -07:00
1 parent ac6c03f2c7
commit 8c171e5a40
3 files changed
+73 -4

No files matched your search

+40 -4
View File
@@ -145,6 +145,14 @@
[_contentView setFrame:[self clipViewFrame]];
[_headerClipView setFrame:[self headerClipViewFrame]];
var cornerView = [self _cornerView];
if (cornerView)
{
[cornerView setFrame:[self cornerViewFrame]];
[self addSubview:cornerView];
}
[self reflectScrolledClipView:_contentView];
}
@@ -189,6 +197,8 @@
clipViewFrame = [self clipViewFrame], // the size of the visible document, within the scrollbars
headerViewFrame = [self headerClipViewFrame],
headerViewHeight = _CGRectGetHeight(headerViewFrame),
cornerViewFrame = [self cornerViewFrame],
cornerViewHeight = _CGRectGetHeight(cornerViewFrame),
scrollPoint = [_contentView bounds].origin,
difference = _CGSizeMake(CPRectGetWidth(documentFrame) - CPRectGetWidth(clipViewFrame), CPRectGetHeight(documentFrame) - CPRectGetHeight(clipViewFrame)),
shouldShowVerticalScroller = (!_autohidesScrollers || difference.height > 0.0) && _hasVerticalScroller,
@@ -216,7 +226,7 @@
if (shouldShowVerticalScroller)
{
var verticalScrollerHeight = CPRectGetHeight([self bounds]) - headerViewHeight;
var verticalScrollerHeight = CPRectGetHeight([self bounds]) - (cornerViewHeight ? cornerViewHeight : headerViewHeight);
if (shouldShowHorizontalScroller)
verticalScrollerHeight -= horizontalScrollerHeight;
@@ -226,7 +236,7 @@
[_verticalScroller setFloatValue:(difference.height <= 0.0) ? 0.0 : scrollPoint.y / difference.height
knobProportion:CPRectGetHeight(clipViewFrame) / CPRectGetHeight(documentFrame)];
[_verticalScroller setFrame:CPRectMake(CPRectGetMaxX(clipViewFrame), headerViewHeight, verticalScrollerWidth, verticalScrollerHeight)];
[_verticalScroller setFrame:CPRectMake(CPRectGetMaxX(clipViewFrame), (cornerViewHeight ? cornerViewHeight : headerViewHeight), verticalScrollerWidth, verticalScrollerHeight)];
}
else if (wasShowingVerticalScroller)
[_verticalScroller setFloatValue:0.0 knobProportion:1.0];
@@ -410,21 +420,47 @@
var documentView = [self documentView];
if ([documentView respondsToSelector:@selector(headerView)])
return [documentView performSelector:@selector(headerView)];
return [documentView headerView];
return nil;
}
- (CPView)_cornerView
{
var documentView = [self documentView];
if ([documentView respondsToSelector:@selector(cornerView)])
return [documentView cornerView];
}
- (CGRect)cornerViewFrame
{
var cornerView = [self _cornerView],
cornerBounds = [cornerView bounds],
bounds = [self insetBounds];
if (!cornerView)
return CGRectMakeZero();
cornerBounds.origin.x = CGRectGetMaxX(bounds) - CGRectGetWidth(cornerBounds);
cornerBounds.origin.y = 0;
return cornerBounds;
}
- (CGRect)headerClipViewFrame
{
var headerView = [self _headerView],
cornerView = [self _cornerView],
bounds = [self insetBounds];
if (!headerView)
return CGRectMakeZero();
bounds.size.height = [headerView bounds].size.height;
bounds.size.width -= _verticalScroller ? [_verticalScroller frame].size.width : [CPScroller scrollerWidth];
if (cornerView)
bounds.size.width -= CGRectGetWidth([cornerView bounds]);
return bounds;
}
+15
View File
@@ -3,6 +3,8 @@
@import "CPControl.j"
@import "CPTableColumn.j"
@import "_CPCornerView.j"
@import "CPScroller.j"
#include "CoreGraphics/CGGeometry.h"
@@ -82,6 +84,7 @@ CPTableViewSelectionHighlightStyleSourceList = 1;
CPTableHeaderView _headerView;
_CPCornerView _cornerView;
CPIndexSet _selectedColumnIndexes;
CPIndexSet _selectedRowIndexes;
@@ -124,6 +127,8 @@ CPTableViewSelectionHighlightStyleSourceList = 1;
[_headerView setTableView:self];
_cornerView = [[_CPCornerView alloc] initWithFrame:CGRectMake(0, 0, [CPScroller scrollerWidth], CGRectGetHeight([_headerView frame]))];
_selectedColumnIndexes = [CPIndexSet indexSet];
_selectedRowIndexes = [CPIndexSet indexSet];
}
@@ -521,6 +526,16 @@ CPTableViewSelectionHighlightStyleSourceList = 1;
* - cornerView
*/
- (CPView)cornerView
{
return _cornerView;
}
- (void)setCornerView:(CPView)aView
{
_cornerView = aView;
}
- (CPView)headerView
{
return _headerView;
+18
View File
@@ -0,0 +1,18 @@
@import "CPView.j"
@implementation _CPCornerView : CPView
{
}
- (id)initWithFrame:(CGRect)aFrame
{
if (self = [super initWithFrame:aFrame])
{
[self setBackgroundColor:[CPColor purpleColor]];
}
return self;
}
@end