diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-13 17:17:39 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-13 17:17:39 +0000 |
commit | 4c5d7c9d04549a993a03ecdf705f484dd1480b0c (patch) | |
tree | 22190503dc6a84a7c4252f35825acac194598893 /ui/events | |
parent | b5a0e743e4658dfee809623ac0721a520c7d8baf (diff) | |
download | chromium_src-4c5d7c9d04549a993a03ecdf705f484dd1480b0c.zip chromium_src-4c5d7c9d04549a993a03ecdf705f484dd1480b0c.tar.gz chromium_src-4c5d7c9d04549a993a03ecdf705f484dd1480b0c.tar.bz2 |
aura: Start using EventPrcessor interface for event dispatch.
Start converting the RootWindowHostDelegate implementations for event-dispatch
use the EventProcessor interface under-the-hood to allow easy transition to the
new dispatch process.
This patch makes this change for Key and Scroll events.
BUG=318879
R=ben@chromium.org
Review URL: https://codereview.chromium.org/113283005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240683 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/events')
-rw-r--r-- | ui/events/event_dispatcher.cc | 6 | ||||
-rw-r--r-- | ui/events/event_processor.cc | 4 | ||||
-rw-r--r-- | ui/events/event_processor.h | 8 |
3 files changed, 17 insertions, 1 deletions
diff --git a/ui/events/event_dispatcher.cc b/ui/events/event_dispatcher.cc index 1c11ef9..a1fbafa 100644 --- a/ui/events/event_dispatcher.cc +++ b/ui/events/event_dispatcher.cc @@ -46,8 +46,12 @@ Event* EventDispatcherDelegate::current_event() { EventDispatchDetails EventDispatcherDelegate::DispatchEvent(EventTarget* target, Event* event) { CHECK(target); + Event::DispatcherApi dispatch_helper(event); + dispatch_helper.set_phase(EP_PREDISPATCH); + dispatch_helper.set_result(ER_UNHANDLED); + EventDispatchDetails details = PreDispatchEvent(target, event); - if (!details.dispatcher_destroyed) + if (!event->handled() && !details.dispatcher_destroyed) details = DispatchEventToTarget(target, event); if (!details.dispatcher_destroyed) details = PostDispatchEvent(target, *event); diff --git a/ui/events/event_processor.cc b/ui/events/event_processor.cc index 45fa830..1a50d2b 100644 --- a/ui/events/event_processor.cc +++ b/ui/events/event_processor.cc @@ -14,6 +14,7 @@ EventDispatchDetails EventProcessor::OnEventFromSource(Event* event) { CHECK(root); EventTargeter* targeter = root->GetEventTargeter(); CHECK(targeter); + PrepareEventForDispatch(event); EventTarget* target = targeter->FindTargetForEvent(root, event); if (!target) return EventDispatchDetails(); @@ -21,4 +22,7 @@ EventDispatchDetails EventProcessor::OnEventFromSource(Event* event) { return DispatchEvent(target, event); } +void EventProcessor::PrepareEventForDispatch(Event* event) { +} + } // namespace ui diff --git a/ui/events/event_processor.h b/ui/events/event_processor.h index fd9bee3..34c9730 100644 --- a/ui/events/event_processor.h +++ b/ui/events/event_processor.h @@ -23,6 +23,14 @@ class EVENTS_EXPORT EventProcessor : public EventDispatcherDelegate { // EventTargets (whose root is returned by GetRootTarget()). virtual EventDispatchDetails OnEventFromSource(Event* event) WARN_UNUSED_RESULT; + + protected: + // Prepares the event so that it can be dispatched. This is invoked before + // an EventTargeter is used to find the target of the event. So this can be + // used to update the event so that the targeter can operate correctly (e.g. + // it can be used to updated the location of the event when disptaching from + // an EventSource in high-DPI). + virtual void PrepareEventForDispatch(Event* event); }; } // namespace ui |