51 #include "WebFrameBridge.h" |
51 #include "WebFrameBridge.h" |
52 #include "Page.h" |
52 #include "Page.h" |
53 #include "Chrome.h" |
53 #include "Chrome.h" |
54 #include "ChromeClient.h" |
54 #include "ChromeClient.h" |
55 #include "FocusController.h" |
55 #include "FocusController.h" |
56 |
56 #include "WebTabbedNavigation.h" |
|
57 #include "PluginHandler.h" |
57 |
58 |
58 #include "WebKitLogger.h" |
59 #include "WebKitLogger.h" |
59 using namespace WebCore; |
60 using namespace WebCore; |
60 using namespace EventNames; |
61 using namespace EventNames; |
61 using namespace RT_GestureHelper; |
62 using namespace RT_GestureHelper; |
128 * EGestureFlick - "fast" drag + touch up - events sent: EGestureFlick, |
129 * EGestureFlick - "fast" drag + touch up - events sent: EGestureFlick, |
129 * EGestureReleased |
130 * EGestureReleased |
130 * EGestureDrop - drag + touch up, !(EGestureSwipe || EGestureFlick) - events |
131 * EGestureDrop - drag + touch up, !(EGestureSwipe || EGestureFlick) - events |
131 * sent: EGestureDrop, EGestureReleased |
132 * sent: EGestureDrop, EGestureReleased |
132 */ |
133 */ |
133 void WebPointerEventHandler::HandleGestureL( const MGestureEvent& aEvent ) |
134 void WebPointerEventHandler::HandleGestureL( const TGestureEvent& aEvent ) |
134 { |
135 { |
135 TGestureCode gtype = const_cast<MGestureEvent&>(aEvent).Code(MGestureEvent::EAxisBoth); |
136 TGestureCode gtype = aEvent.Code(EAxisBoth); |
|
137 TPoint gpos = aEvent.CurrentPos(); |
|
138 |
|
139 TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType(); |
|
140 |
|
141 PluginSkin* plugin = m_webview->mainFrame()->focusedPlugin(); |
|
142 if (plugin && plugin->pluginWin()) { |
|
143 if (plugin->pluginWin()->HandleGesture(aEvent)) { |
|
144 return; |
|
145 } |
|
146 } |
136 updateCursor(aEvent.CurrentPos()); |
147 updateCursor(aEvent.CurrentPos()); |
137 |
148 |
138 switch (gtype) { |
149 switch (gtype) { |
139 // sent on touch down |
150 // sent on touch down |
140 case EGestureStart: |
151 case EGestureStart: |
202 |
213 |
203 |
214 |
204 // ====================================================================== |
215 // ====================================================================== |
205 // WebPointerEventHandler::handleTap |
216 // WebPointerEventHandler::handleTap |
206 // ====================================================================== |
217 // ====================================================================== |
207 void WebPointerEventHandler::handleTapL(const MGestureEvent& aEvent) |
218 void WebPointerEventHandler::handleTapL(const TGestureEvent& aEvent) |
208 { |
219 { |
209 m_buttonDownTimer.stop(); |
220 m_buttonDownTimer.stop(); |
210 m_lastTapEvent = m_currentEvent; |
221 m_lastTapEvent = m_currentEvent; |
211 if(!m_webview->inPageViewMode()){ |
222 if(!m_webview->inPageViewMode()){ |
212 doTapL(); |
223 doTapL(); |
213 } |
224 } |
214 } |
225 } |
215 // ====================================================================== |
226 // ====================================================================== |
216 // WebPointerEventHandler::handleDoubleTap |
227 // WebPointerEventHandler::handleDoubleTap |
217 //====================================================================== |
228 //====================================================================== |
218 void WebPointerEventHandler::handleDoubleTap(const MGestureEvent& aEvent) |
229 void WebPointerEventHandler::handleDoubleTap(const TGestureEvent& aEvent) |
219 { |
230 { |
220 if ( !m_webview->viewIsScrolling() && |
231 if ( !m_webview->viewIsScrolling() && |
221 (m_webview->brCtl()->capabilities() & TBrCtlDefs::ECapabilityFitToScreen)) { |
232 (m_webview->brCtl()->capabilities() & TBrCtlDefs::ECapabilityFitToScreen)) { |
222 if (m_isHighlighted){ |
233 if (m_isHighlighted){ |
223 dehighlight(); |
234 dehighlight(); |
230 } |
241 } |
231 |
242 |
232 // ====================================================================== |
243 // ====================================================================== |
233 // WebPointerEventHandler::handleTouchDownL |
244 // WebPointerEventHandler::handleTouchDownL |
234 //====================================================================== |
245 //====================================================================== |
235 void WebPointerEventHandler::handleTouchDownL(const MGestureEvent& aEvent) |
246 void WebPointerEventHandler::handleTouchDownL(const TGestureEvent& aEvent) |
236 { |
247 { |
237 TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType(); |
248 TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType(); |
|
249 PluginHandler* pluginHandler = WebCore::StaticObjectsContainer::instance()->pluginHandler(); |
|
250 PluginSkin* pluginToActivate = pluginHandler->pluginToActivate(); |
238 m_buttonDownEvent = m_currentEvent; |
251 m_buttonDownEvent = m_currentEvent; |
239 m_highlightPos = aEvent.CurrentPos(); |
252 m_highlightPos = aEvent.CurrentPos(); |
240 |
253 |
241 if ( !m_buttonDownTimer.isActive() && !m_webview->inPageViewMode() ){ |
254 if ( !m_buttonDownTimer.isActive() && !m_webview->inPageViewMode() && |
|
255 !pluginToActivate ){ |
242 m_buttonDownTimer.startOneShot(0.1f); |
256 m_buttonDownTimer.startOneShot(0.1f); |
243 } |
257 } |
244 |
258 |
245 m_webview->pageScrollHandler()->handleTouchDownGH(aEvent); |
259 m_webview->pageScrollHandler()->handleTouchDownGH(aEvent); |
246 |
260 |
252 } |
266 } |
253 else { |
267 else { |
254 plugin->pluginWin()->HandlePointerEventL(m_buttonDownEvent); |
268 plugin->pluginWin()->HandlePointerEventL(m_buttonDownEvent); |
255 } |
269 } |
256 } |
270 } |
|
271 } |
|
272 if (pluginToActivate) { |
|
273 Frame* coreFrame = core(m_webview->mainFrame()); |
|
274 coreFrame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(m_buttonDownEvent)); |
257 } |
275 } |
258 /* |
276 /* |
259 * After introducing "link selection" pointer down action is done in |
277 * After introducing "link selection" pointer down action is done in |
260 * buttondown timer callback. When "down" gesture event is arrived we start |
278 * buttondown timer callback. When "down" gesture event is arrived we start |
261 * timer end exit, so gesture helper is ready to deliver next gesture event. |
279 * timer end exit, so gesture helper is ready to deliver next gesture event. |
271 } |
289 } |
272 |
290 |
273 // ====================================================================== |
291 // ====================================================================== |
274 // WebPointerEventHandler::handleTouchUp |
292 // WebPointerEventHandler::handleTouchUp |
275 // ====================================================================== |
293 // ====================================================================== |
276 void WebPointerEventHandler::handleTouchUp(const MGestureEvent& aEvent) |
294 void WebPointerEventHandler::handleTouchUp(const TGestureEvent& aEvent) |
277 { |
295 { |
278 m_highlightPos = TPoint(-1,-1); |
296 m_highlightPos = TPoint(-1,-1); |
279 m_highlightedNode = NULL; |
297 m_highlightedNode = NULL; |
280 |
298 |
281 m_webview->pageScrollHandler()->handleTouchUpGH(aEvent); |
299 m_webview->pageScrollHandler()->handleTouchUpGH(aEvent); |
282 } |
300 } |
283 |
301 |
284 // ====================================================================== |
302 // ====================================================================== |
285 // WebPointerEventHandler::handleMoveL |
303 // WebPointerEventHandler::handleMoveL |
286 // ====================================================================== |
304 // ====================================================================== |
287 void WebPointerEventHandler::handleMove(const MGestureEvent& aEvent) |
305 void WebPointerEventHandler::handleMove(const TGestureEvent& aEvent) |
288 { |
306 { |
289 TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType(); |
307 TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType(); |
290 TPoint curPos = aEvent.CurrentPos(); |
308 TPoint curPos = aEvent.CurrentPos(); |
291 |
309 |
292 m_buttonDownTimer.stop(); |
310 m_buttonDownTimer.stop(); |