33 |
34 |
34 // The following deceleration curve is generated by a script |
35 // The following deceleration curve is generated by a script |
35 // It lists the timeout dt values in microseconds. |
36 // It lists the timeout dt values in microseconds. |
36 const int KDecelCurveSize = 10; |
37 const int KDecelCurveSize = 10; |
37 |
38 |
|
39 #ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF |
|
40 const int KScrollIntervalTimeout = 30000; // scroll timer interval in microseconds |
|
41 #else |
38 const int KScrollIntervalTimeout = 60000; // scroll timer interval in microseconds |
42 const int KScrollIntervalTimeout = 60000; // scroll timer interval in microseconds |
|
43 #endif |
39 |
44 |
40 const float KDecceleration = -750.0; |
45 const float KDecceleration = -750.0; |
41 const float KSpeedHigh = 2000.0; |
46 const float KSpeedHigh = 2000.0; |
42 |
47 |
43 int decelTimerCB(TAny* ptr); |
48 int decelTimerCB(TAny* ptr); |
105 |
110 |
106 void WebScrollingDeceleratorGH::cancelDecel() |
111 void WebScrollingDeceleratorGH::cancelDecel() |
107 { |
112 { |
108 m_decelelatorSwitch = false; |
113 m_decelelatorSwitch = false; |
109 if (m_decelTimer->IsActive()) { |
114 if (m_decelTimer->IsActive()) { |
110 m_webView.setScrolling(false); |
115 m_webView.setViewIsScrolling(false); |
111 m_webView.resumeJsTimers(); |
116 m_webView.resumeJsTimers(); |
112 m_decelTimer->Cancel(); |
117 m_decelTimer->Cancel(); |
113 } |
118 } |
114 } |
119 } |
115 |
120 |
116 void WebScrollingDeceleratorGH::startDecel(TRealPoint& speed, WebScrollbarDrawer* scrollbarDrawer) |
121 bool WebScrollingDeceleratorGH::startDecel(TRealPoint& speed, WebScrollbarDrawer* scrollbarDrawer) |
117 { |
122 { |
|
123 bool started = false; |
118 m_decelelatorSwitch = true; |
124 m_decelelatorSwitch = true; |
119 m_scrollbarDrawer = scrollbarDrawer; |
125 m_scrollbarDrawer = scrollbarDrawer; |
120 float speedX = speed.iX; |
126 float speedX = speed.iX; |
121 float speedY = speed.iY; |
127 float speedY = speed.iY; |
122 float absSpeedX = abs(speedX); |
128 float absSpeedX = abs(speedX); |
132 m_initSpeed.iX = (-1) * speedX; |
138 m_initSpeed.iX = (-1) * speedX; |
133 m_initSpeed.iY = (-1) * speedY; |
139 m_initSpeed.iY = (-1) * speedY; |
134 |
140 |
135 m_numscrollsteps = 0; |
141 m_numscrollsteps = 0; |
136 if (m_decelTimer->IsActive()) { |
142 if (m_decelTimer->IsActive()) { |
137 m_webView.setScrolling(false); |
143 m_webView.setViewIsScrolling(false); |
138 m_webView.resumeJsTimers(); |
144 m_webView.resumeJsTimers(); |
139 m_decelTimer->Cancel(); |
145 m_decelTimer->Cancel(); |
140 } |
146 } |
141 |
147 |
142 WebFrameView* scrollingView = m_webView.pageScrollHandler()->currentScrollingFrameView(); |
148 WebFrameView* scrollingView = m_webView.pageScrollHandler()->currentScrollingFrameView(); |
143 if (scrollingView) { |
149 if (scrollingView) { |
144 m_webView.pauseJsTimers(); // pause the JS timers |
150 m_webView.pauseJsTimers(); // pause the JS timers |
145 m_webView.setScrolling(true); |
151 m_webView.setViewIsScrolling(true); |
146 m_startPos = scrollingView->contentPos(); |
152 m_startPos = scrollingView->contentPos(); |
147 m_lastPos = m_startPos; |
153 m_lastPos = m_startPos; |
148 m_decelTimer->Start(0, KScrollIntervalTimeout, |
154 m_decelTimer->Start(0, KScrollIntervalTimeout, |
149 TCallBack(&decelTimerCB, this)); |
155 TCallBack(&decelTimerCB, this)); |
150 } |
156 started = true; |
|
157 } |
|
158 return started; |
151 } |
159 } |
152 |
160 |
153 void WebScrollingDeceleratorGH::scroll() |
161 void WebScrollingDeceleratorGH::scroll() |
154 { |
162 { |
155 if (!m_decelelatorSwitch) return; |
163 if (!m_decelelatorSwitch) return; |
193 if (m_scrollbarDrawer) { |
201 if (m_scrollbarDrawer) { |
194 m_scrollbarDrawer->fadeScrollbar(); |
202 m_scrollbarDrawer->fadeScrollbar(); |
195 } |
203 } |
196 |
204 |
197 m_webView.resumeJsTimers(); // resume the js timers |
205 m_webView.resumeJsTimers(); // resume the js timers |
198 m_webView.setScrolling(false); |
206 m_webView.setViewIsScrolling(false); |
199 m_decelTimer->Cancel(); |
207 m_decelTimer->Cancel(); |
200 handler->clearScrollingElement(); |
208 handler->clearScrollingElement(); |
201 m_webView.setViewIsScrolling(false); |
209 m_webView.setViewIsScrolling(false); |
202 m_webView.toggleRepaintTimer(true); |
210 m_webView.toggleRepaintTimer(true); |
203 } |
211 } |