Commit bdba405e authored by sadrul@chromium.org's avatar sadrul@chromium.org

events: Dispatch all events through EventHandler::OnEvent from the dispatcher.

The EventDispatcher dispatches all events to EventHandler::OnEvent. The default
implementation routes various events to more appropriate handlers (e.g. OnKeyEvent
for KeyEvent etc.)

BUG=163606

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=170641

Review URL: https://codereview.chromium.org/11299285

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170656 0039d316-1c4b-4281-b951-d872f2087c98
parent 877f63ff
...@@ -97,7 +97,8 @@ class UI_EXPORT Event { ...@@ -97,7 +97,8 @@ class UI_EXPORT Event {
type_ == ET_MOUSE_MOVED || type_ == ET_MOUSE_MOVED ||
type_ == ET_MOUSE_ENTERED || type_ == ET_MOUSE_ENTERED ||
type_ == ET_MOUSE_EXITED || type_ == ET_MOUSE_EXITED ||
type_ == ET_MOUSEWHEEL; type_ == ET_MOUSEWHEEL ||
type_ == ET_MOUSE_CAPTURE_CHANGED;
} }
bool IsTouchEvent() const { bool IsTouchEvent() const {
...@@ -114,6 +115,7 @@ class UI_EXPORT Event { ...@@ -114,6 +115,7 @@ class UI_EXPORT Event {
case ET_GESTURE_SCROLL_END: case ET_GESTURE_SCROLL_END:
case ET_GESTURE_SCROLL_UPDATE: case ET_GESTURE_SCROLL_UPDATE:
case ET_GESTURE_TAP: case ET_GESTURE_TAP:
case ET_GESTURE_TAP_CANCEL:
case ET_GESTURE_TAP_DOWN: case ET_GESTURE_TAP_DOWN:
case ET_GESTURE_BEGIN: case ET_GESTURE_BEGIN:
case ET_GESTURE_END: case ET_GESTURE_END:
......
...@@ -24,31 +24,6 @@ EventResult EventDispatcher::DispatchEventToSingleHandler(EventHandler* handler, ...@@ -24,31 +24,6 @@ EventResult EventDispatcher::DispatchEventToSingleHandler(EventHandler* handler,
return handler->OnEvent(event); return handler->OnEvent(event);
} }
EventResult EventDispatcher::DispatchEventToSingleHandler(EventHandler* handler,
KeyEvent* event) {
return handler->OnKeyEvent(event);
}
EventResult EventDispatcher::DispatchEventToSingleHandler(EventHandler* handler,
MouseEvent* event) {
return handler->OnMouseEvent(event);
}
EventResult EventDispatcher::DispatchEventToSingleHandler(EventHandler* handler,
ScrollEvent* event) {
return handler->OnScrollEvent(event);
}
EventResult EventDispatcher::DispatchEventToSingleHandler(EventHandler* handler,
TouchEvent* event) {
return handler->OnTouchEvent(event);
}
EventResult EventDispatcher::DispatchEventToSingleHandler(EventHandler* handler,
GestureEvent* event) {
return handler->OnGestureEvent(event);
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// EventDispatcher::ScopedDispatchHelper // EventDispatcher::ScopedDispatchHelper
......
...@@ -115,16 +115,6 @@ class UI_EXPORT EventDispatcher { ...@@ -115,16 +115,6 @@ class UI_EXPORT EventDispatcher {
} }
EventResult DispatchEventToSingleHandler(EventHandler* handler, Event* event); EventResult DispatchEventToSingleHandler(EventHandler* handler, Event* event);
EventResult DispatchEventToSingleHandler(EventHandler* handler,
KeyEvent* event);
EventResult DispatchEventToSingleHandler(EventHandler* handler,
MouseEvent* event);
EventResult DispatchEventToSingleHandler(EventHandler* handler,
ScrollEvent* event);
EventResult DispatchEventToSingleHandler(EventHandler* handler,
TouchEvent* event);
EventResult DispatchEventToSingleHandler(EventHandler* handler,
GestureEvent* event);
// This is used to track whether the dispatcher has been destroyed in the // This is used to track whether the dispatcher has been destroyed in the
// middle of dispatching an event. // middle of dispatching an event.
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "ui/base/events/event_handler.h" #include "ui/base/events/event_handler.h"
#include "ui/base/events/event.h"
namespace ui { namespace ui {
EventHandler::EventHandler() { EventHandler::EventHandler() {
...@@ -13,6 +15,16 @@ EventHandler::~EventHandler() { ...@@ -13,6 +15,16 @@ EventHandler::~EventHandler() {
} }
EventResult EventHandler::OnEvent(Event* event) { EventResult EventHandler::OnEvent(Event* event) {
if (event->IsKeyEvent())
return OnKeyEvent(static_cast<KeyEvent*>(event));
if (event->IsMouseEvent())
return OnMouseEvent(static_cast<MouseEvent*>(event));
if (event->IsScrollEvent())
return OnScrollEvent(static_cast<ScrollEvent*>(event));
if (event->IsTouchEvent())
return OnTouchEvent(static_cast<TouchEvent*>(event));
if (event->IsGestureEvent())
return OnGestureEvent(static_cast<GestureEvent*>(event));
return ui::ER_UNHANDLED; return ui::ER_UNHANDLED;
} }
......
...@@ -28,6 +28,10 @@ class UI_EXPORT EventHandler { ...@@ -28,6 +28,10 @@ class UI_EXPORT EventHandler {
EventHandler(); EventHandler();
virtual ~EventHandler(); virtual ~EventHandler();
// This is called for all events. The default implementation routes the event
// to one of the event-specific callbacks (OnKeyEvent, OnMouseEvent etc.). If
// this is overridden, then normally, the override should chain into the
// default implementation for un-handled events.
virtual EventResult OnEvent(Event* event); virtual EventResult OnEvent(Event* event);
virtual EventResult OnKeyEvent(KeyEvent* event); virtual EventResult OnKeyEvent(KeyEvent* event);
......
...@@ -801,6 +801,12 @@ ...@@ -801,6 +801,12 @@
'sources!': [ 'sources!': [
'base/events/event.cc', 'base/events/event.cc',
'base/events/event.h', 'base/events/event.h',
'base/events/event_dispatcher.cc',
'base/events/event_dispatcher.h',
'base/events/event_handler.cc',
'base/events/event_handler.h',
'base/events/event_target.cc',
'base/events/event_target.h',
'base/x/events_x.cc', 'base/x/events_x.cc',
], ],
}], }],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment