mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-30 20:07:36 +00:00
Add corner views to the table view stuff
This commit is contained in:
1 parent
ac6c03f2c7
commit
8c171e5a40
3 files changed
+73
-4
No files matched your search
+40
-4
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
Reference in new issue
Block a user