From e44924fb89c7d6fdad23c8bf0acc13dba23c45ec Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Fri, 5 Nov 2010 09:32:48 -0700 Subject: [PATCH 1/1] Downgrade support for -[UIScrollView setDecelerationRate]. --- UICaboodle/BrowserView.mm | 12 ++++++++++-- iPhonePrivate.h | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/UICaboodle/BrowserView.mm b/UICaboodle/BrowserView.mm index 8b361f5e..90a584f3 100644 --- a/UICaboodle/BrowserView.mm +++ b/UICaboodle/BrowserView.mm @@ -36,6 +36,8 @@ static inline void CYRelease(Type_ &value) { } } +float CYScrollViewDecelerationRateNormal; + @interface WebView (Apple) - (void) _setLayoutInterval:(float)interval; @end @@ -315,6 +317,11 @@ enum CYWebPolicyDecision { + (void) _initialize { [WebPreferences _setInitialDefaultTextEncodingToSystemEncoding]; + + if (float *_UIScrollViewDecelerationRateNormal = reinterpret_cast(dlsym(RTLD_DEFAULT, "UIScrollViewDecelerationRateNormal"))) + CYScrollViewDecelerationRateNormal = *_UIScrollViewDecelerationRateNormal; + else // XXX: this actually might be fast on some older systems: we should look into this + CYScrollViewDecelerationRateNormal = 0.998; } - (void) dealloc { @@ -807,7 +814,7 @@ enum CYWebPolicyDecision { scroller_ = [webview_ _scrollView]; [scroller_ setDirectionalLockEnabled:YES]; - [scroller_ setDecelerationRate:UIScrollViewDecelerationRateNormal]; + [scroller_ setDecelerationRate:CYScrollViewDecelerationRateNormal]; [scroller_ setDelaysContentTouches:NO]; [scroller_ setCanCancelContentTouches:YES]; @@ -816,7 +823,8 @@ enum CYWebPolicyDecision { scroller_ = (UIScrollView *) scroller; [scroller setDirectionalScrolling:YES]; - [scroller setScrollDecelerationFactor:UIScrollViewDecelerationRateNormal]; /* 0.989324 */ + // XXX: we might be better off /not/ setting this on older systems + [scroller setScrollDecelerationFactor:CYScrollViewDecelerationRateNormal]; /* 0.989324 */ [scroller setScrollHysteresis:0]; /* 8 */ [scroller setThumbDetectionEnabled:NO]; diff --git a/iPhonePrivate.h b/iPhonePrivate.h index 6dc893b7..1c198581 100644 --- a/iPhonePrivate.h +++ b/iPhonePrivate.h @@ -318,6 +318,12 @@ typedef enum { - (void) setModalPresentationStyle:(UIModalPresentationStyle)style; @end +@interface UIScrollView (iOS_3_0) +@property(assign, nonatomic) float decelerationRate; +@end + +extern float const UIScrollViewDecelerationRateNormal; + #endif//AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER // }}} -- 2.45.2