summaryrefslogtreecommitdiffstats
path: root/ui/events
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-13 17:17:39 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-13 17:17:39 +0000
commit4c5d7c9d04549a993a03ecdf705f484dd1480b0c (patch)
tree22190503dc6a84a7c4252f35825acac194598893 /ui/events
parentb5a0e743e4658dfee809623ac0721a520c7d8baf (diff)
downloadchromium_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.cc6
-rw-r--r--ui/events/event_processor.cc4
-rw-r--r--ui/events/event_processor.h8
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