Fix for CPScrollView performance issue.

[#93 state:resolved]

Reviewed by ross.
This commit is contained in:
Francisco Ryan Tolmasky I
2008-10-06 17:37:27 -07:00
parent 6b6a6a6f1d
commit 4d39466f14
2 changed files with 15 additions and 30 deletions
+15 -6
View File
@@ -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];
}
-24
View File
@@ -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;
}