| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 NOTREACHED(); | 905 NOTREACHED(); |
| 906 } | 906 } |
| 907 m_client->didHandleGestureEvent(event, eventCancelled); | 907 m_client->didHandleGestureEvent(event, eventCancelled); |
| 908 return eventResult; | 908 return eventResult; |
| 909 } | 909 } |
| 910 | 910 |
| 911 WebInputEventResult WebViewImpl::handleSyntheticWheelFromTouchpadPinchEvent(cons
t WebGestureEvent& pinchEvent) | 911 WebInputEventResult WebViewImpl::handleSyntheticWheelFromTouchpadPinchEvent(cons
t WebGestureEvent& pinchEvent) |
| 912 { | 912 { |
| 913 DCHECK_EQ(pinchEvent.type, WebInputEvent::GesturePinchUpdate); | 913 DCHECK_EQ(pinchEvent.type, WebInputEvent::GesturePinchUpdate); |
| 914 | 914 |
| 915 // Touchscreen pinch events should not reach Blink. | |
| 916 DCHECK_EQ(pinchEvent.sourceDevice, WebGestureDeviceTouchpad); | |
| 917 | |
| 918 // For pinch gesture events, match typical trackpad behavior on Windows by s
ending fake | 915 // For pinch gesture events, match typical trackpad behavior on Windows by s
ending fake |
| 919 // wheel events with the ctrl modifier set when we see trackpad pinch gestur
es. Ideally | 916 // wheel events with the ctrl modifier set when we see trackpad pinch gestur
es. Ideally |
| 920 // we'd someday get a platform 'pinch' event and send that instead. | 917 // we'd someday get a platform 'pinch' event and send that instead. |
| 921 WebMouseWheelEvent wheelEvent; | 918 WebMouseWheelEvent wheelEvent; |
| 922 wheelEvent.type = WebInputEvent::MouseWheel; | 919 wheelEvent.type = WebInputEvent::MouseWheel; |
| 923 wheelEvent.timeStampSeconds = pinchEvent.timeStampSeconds; | 920 wheelEvent.timeStampSeconds = pinchEvent.timeStampSeconds; |
| 924 wheelEvent.windowX = wheelEvent.x = pinchEvent.x; | 921 wheelEvent.windowX = wheelEvent.x = pinchEvent.x; |
| 925 wheelEvent.windowY = wheelEvent.y = pinchEvent.y; | 922 wheelEvent.windowY = wheelEvent.y = pinchEvent.y; |
| 926 wheelEvent.globalX = pinchEvent.globalX; | 923 wheelEvent.globalX = pinchEvent.globalX; |
| 927 wheelEvent.globalY = pinchEvent.globalY; | 924 wheelEvent.globalY = pinchEvent.globalY; |
| (...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2211 PlatformMouseEventBuilder(mainFrameImpl()->frameView(), static_cast<
const WebMouseEvent&>(inputEvent)), | 2208 PlatformMouseEventBuilder(mainFrameImpl()->frameView(), static_cast<
const WebMouseEvent&>(inputEvent)), |
| 2212 eventType, static_cast<const WebMouseEvent&>(inputEvent).clickCount)
; | 2209 eventType, static_cast<const WebMouseEvent&>(inputEvent).clickCount)
; |
| 2213 return WebInputEventResult::HandledSystem; | 2210 return WebInputEventResult::HandledSystem; |
| 2214 } | 2211 } |
| 2215 | 2212 |
| 2216 // FIXME: This should take in the intended frame, not the local frame root. | 2213 // FIXME: This should take in the intended frame, not the local frame root. |
| 2217 WebInputEventResult result = PageWidgetDelegate::handleInputEvent(*this, inp
utEvent, mainFrameImpl()->frame()); | 2214 WebInputEventResult result = PageWidgetDelegate::handleInputEvent(*this, inp
utEvent, mainFrameImpl()->frame()); |
| 2218 if (result != WebInputEventResult::NotHandled) | 2215 if (result != WebInputEventResult::NotHandled) |
| 2219 return result; | 2216 return result; |
| 2220 | 2217 |
| 2221 // Unhandled touchpad gesture pinch events synthesize mouse wheel events. | 2218 // Unhandled pinch events should adjust the scale. |
| 2222 if (inputEvent.type == WebInputEvent::GesturePinchUpdate) { | 2219 if (inputEvent.type == WebInputEvent::GesturePinchUpdate) { |
| 2223 const WebGestureEvent& pinchEvent = static_cast<const WebGestureEvent&>(
inputEvent); | 2220 const WebGestureEvent& pinchEvent = static_cast<const WebGestureEvent&>(
inputEvent); |
| 2224 | 2221 |
| 2225 // First, synthesize a Windows-like wheel event to send to any handlers
that may exist. | 2222 // For touchpad gestures synthesize a Windows-like wheel event |
| 2226 result = handleSyntheticWheelFromTouchpadPinchEvent(pinchEvent); | 2223 // to send to any handlers that may exist. Not necessary for touchscreen |
| 2227 if (result != WebInputEventResult::NotHandled) | 2224 // as touch events would have already been sent for the gesture. |
| 2228 return result; | 2225 if (pinchEvent.sourceDevice == WebGestureDeviceTouchpad) { |
| 2226 result = handleSyntheticWheelFromTouchpadPinchEvent(pinchEvent); |
| 2227 if (result != WebInputEventResult::NotHandled) |
| 2228 return result; |
| 2229 } |
| 2229 | 2230 |
| 2230 if (pinchEvent.data.pinchUpdate.zoomDisabled) | 2231 if (pinchEvent.data.pinchUpdate.zoomDisabled) |
| 2231 return WebInputEventResult::NotHandled; | 2232 return WebInputEventResult::NotHandled; |
| 2232 | 2233 |
| 2233 if (page()->frameHost().visualViewport().magnifyScaleAroundAnchor(pinchE
vent.data.pinchUpdate.scale, FloatPoint(pinchEvent.x, pinchEvent.y))) | 2234 if (page()->frameHost().visualViewport().magnifyScaleAroundAnchor(pinchE
vent.data.pinchUpdate.scale, FloatPoint(pinchEvent.x, pinchEvent.y))) |
| 2234 return WebInputEventResult::HandledSystem; | 2235 return WebInputEventResult::HandledSystem; |
| 2235 } | 2236 } |
| 2236 | 2237 |
| 2237 return WebInputEventResult::NotHandled; | 2238 return WebInputEventResult::NotHandled; |
| 2238 } | 2239 } |
| (...skipping 2352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4591 return nullptr; | 4592 return nullptr; |
| 4592 return focusedFrame; | 4593 return focusedFrame; |
| 4593 } | 4594 } |
| 4594 | 4595 |
| 4595 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const | 4596 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const |
| 4596 { | 4597 { |
| 4597 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; | 4598 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; |
| 4598 } | 4599 } |
| 4599 | 4600 |
| 4600 } // namespace blink | 4601 } // namespace blink |
| OLD | NEW |