mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 13:07:02 +00:00
Fix for CPScrollView performance issue.
[#93 state:resolved] Reviewed by ross.
This commit is contained in:
+15
-6
@@ -137,10 +137,7 @@ import "CPView.j"
|
||||
*/
|
||||
- (void)viewBoundsChanged:(CPNotification)aNotification
|
||||
{
|
||||
var superview = [self superview];
|
||||
|
||||
if([superview isKindOfClass:[CPScrollView class]])
|
||||
[superview reflectScrolledClipView:self];
|
||||
[self viewFrameChanged:aNotification];
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -149,9 +146,21 @@ import "CPView.j"
|
||||
*/
|
||||
- (void)viewFrameChanged:(CPNotification)aNotification
|
||||
{
|
||||
var superview = [self superview];
|
||||
var oldScrollPoint = [self bounds].origin;
|
||||
|
||||
// Call scrollToPoint: because the current scroll point may no longer make
|
||||
// sense given the new frame of the document view.
|
||||
[self scrollToPoint:oldScrollPoint];
|
||||
|
||||
// scrollToPoint: takes care of reflectScrollClipView: for us, so bail if
|
||||
// the scroll points are not equal (meaning scrollToPoint: didn't early bail).
|
||||
if (!CGPointEqualToPoint(oldScrollPoint, [self bounds].origin))
|
||||
return;
|
||||
|
||||
if([superview isKindOfClass:[CPScrollView class]])
|
||||
// ... and we're in a scroll view of course.
|
||||
var superview = [self superview];
|
||||
|
||||
if ([superview isKindOfClass:[CPScrollView class]])
|
||||
[superview reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
|
||||
@@ -227,30 +227,6 @@ import "CPScroller.j"
|
||||
|
||||
[_contentView setFrame:contentViewFrame];
|
||||
|
||||
// The reason we have to do this is because this is called on a frame size change, so when the frame changes,
|
||||
// so does the the float value, so we have to update the clip view accordingly.
|
||||
if (_hasVerticalScroller && (shouldShowVerticalScroller || wasShowingVerticalScroller))
|
||||
{
|
||||
//[self _verticalScrollerDidScroll:_verticalScroller];
|
||||
var value = [_verticalScroller floatValue],
|
||||
contentBounds = [_contentView bounds];
|
||||
|
||||
contentBounds.origin.y = value * (_CGRectGetHeight([documentView frame]) - _CGRectGetHeight(contentBounds));
|
||||
|
||||
[_contentView scrollToPoint:contentBounds.origin];
|
||||
}
|
||||
if (_hasHorizontalScroller && (shouldShowHorizontalScroller || wasShowingHorizontalScroller))
|
||||
{
|
||||
//[self _horizontalScrollerDidScroll:_horizontalScroller];
|
||||
|
||||
var value = [_horizontalScroller floatValue],
|
||||
contentBounds = [_contentView bounds];
|
||||
|
||||
contentBounds.origin.x = value * (_CGRectGetWidth([documentView frame]) - _CGRectGetWidth(contentBounds));
|
||||
|
||||
[_contentView scrollToPoint:contentBounds.origin];
|
||||
}
|
||||
|
||||
--_recursionCount;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user