bool PageWidgetDelegate::handleInputEvent(Page* page, PageWidgetEventHandler& handler, const WebInputEvent& event) { Frame* frame = page ? page->mainFrame() : 0; switch (event.type) { // FIXME: WebKit seems to always return false on mouse events processing // methods. For now we'll assume it has processed them (as we are only // interested in whether keyboard events are processed). case WebInputEvent::MouseMove: if (!frame || !frame->view()) return true; handler.handleMouseMove(*frame, *static_cast<const WebMouseEvent*>(&event)); return true; case WebInputEvent::MouseLeave: if (!frame || !frame->view()) return true; handler.handleMouseLeave(*frame, *static_cast<const WebMouseEvent*>(&event)); return true; case WebInputEvent::MouseDown: if (!frame || !frame->view()) return true; handler.handleMouseDown(*frame, *static_cast<const WebMouseEvent*>(&event)); return true; case WebInputEvent::MouseUp: if (!frame || !frame->view()) return true; handler.handleMouseUp(*frame, *static_cast<const WebMouseEvent*>(&event)); return true; case WebInputEvent::MouseWheel: if (!frame || !frame->view()) return false; return handler.handleMouseWheel(*frame, *static_cast<const WebMouseWheelEvent*>(&event)); case WebInputEvent::RawKeyDown: case WebInputEvent::KeyDown: case WebInputEvent::KeyUp: return handler.handleKeyEvent(*static_cast<const WebKeyboardEvent*>(&event)); case WebInputEvent::Char: return handler.handleCharEvent(*static_cast<const WebKeyboardEvent*>(&event)); #if ENABLE(GESTURE_EVENTS) case WebInputEvent::GestureScrollBegin: case WebInputEvent::GestureScrollEnd: case WebInputEvent::GestureScrollUpdate: case WebInputEvent::GestureScrollUpdateWithoutPropagation: case WebInputEvent::GestureFlingStart: case WebInputEvent::GestureFlingCancel: case WebInputEvent::GestureTap: case WebInputEvent::GestureTapDown: case WebInputEvent::GestureTapCancel: case WebInputEvent::GestureDoubleTap: case WebInputEvent::GestureTwoFingerTap: case WebInputEvent::GestureLongPress: case WebInputEvent::GestureLongTap: return handler.handleGestureEvent(*static_cast<const WebGestureEvent*>(&event)); #endif #if ENABLE(TOUCH_EVENTS) case WebInputEvent::TouchStart: case WebInputEvent::TouchMove: case WebInputEvent::TouchEnd: case WebInputEvent::TouchCancel: if (!frame || !frame->view()) return false; return handler.handleTouchEvent(*frame, *static_cast<const WebTouchEvent*>(&event)); #endif #if ENABLE(GESTURE_EVENTS) case WebInputEvent::GesturePinchBegin: case WebInputEvent::GesturePinchEnd: case WebInputEvent::GesturePinchUpdate: // FIXME: Once PlatformGestureEvent is updated to support pinch, this // should call handleGestureEvent, just like it currently does for // gesture scroll. return false; #endif default: return false; } }
bool PageWidgetDelegate::handleInputEvent(PageWidgetEventHandler& handler, const WebInputEvent& event, LocalFrame* root) { switch (event.type) { // FIXME: WebKit seems to always return false on mouse events processing // methods. For now we'll assume it has processed them (as we are only // interested in whether keyboard events are processed). // FIXME: Why do we return true when there is no root or the root is // detached? case WebInputEvent::MouseMove: if (!root || !root->view()) return true; handler.handleMouseMove(*root, static_cast<const WebMouseEvent&>(event)); return true; case WebInputEvent::MouseLeave: if (!root || !root->view()) return true; handler.handleMouseLeave(*root, static_cast<const WebMouseEvent&>(event)); return true; case WebInputEvent::MouseDown: if (!root || !root->view()) return true; handler.handleMouseDown(*root, static_cast<const WebMouseEvent&>(event)); return true; case WebInputEvent::MouseUp: if (!root || !root->view()) return true; handler.handleMouseUp(*root, static_cast<const WebMouseEvent&>(event)); return true; case WebInputEvent::MouseWheel: if (!root || !root->view()) return false; return handler.handleMouseWheel(*root, static_cast<const WebMouseWheelEvent&>(event)); case WebInputEvent::RawKeyDown: case WebInputEvent::KeyDown: case WebInputEvent::KeyUp: return handler.handleKeyEvent(static_cast<const WebKeyboardEvent&>(event)); case WebInputEvent::Char: return handler.handleCharEvent(static_cast<const WebKeyboardEvent&>(event)); case WebInputEvent::GestureScrollBegin: case WebInputEvent::GestureScrollEnd: case WebInputEvent::GestureScrollUpdate: case WebInputEvent::GestureFlingStart: case WebInputEvent::GestureFlingCancel: case WebInputEvent::GestureTap: case WebInputEvent::GestureTapUnconfirmed: case WebInputEvent::GestureTapDown: case WebInputEvent::GestureShowPress: case WebInputEvent::GestureTapCancel: case WebInputEvent::GestureDoubleTap: case WebInputEvent::GestureTwoFingerTap: case WebInputEvent::GestureLongPress: case WebInputEvent::GestureLongTap: return handler.handleGestureEvent(static_cast<const WebGestureEvent&>(event)); case WebInputEvent::TouchStart: case WebInputEvent::TouchMove: case WebInputEvent::TouchEnd: case WebInputEvent::TouchCancel: if (!root || !root->view()) return false; return handler.handleTouchEvent(*root, static_cast<const WebTouchEvent&>(event)); case WebInputEvent::GesturePinchBegin: case WebInputEvent::GesturePinchEnd: case WebInputEvent::GesturePinchUpdate: // FIXME: Once PlatformGestureEvent is updated to support pinch, this // should call handleGestureEvent, just like it currently does for // gesture scroll. return false; default: return false; } }