summaryrefslogtreecommitdiff
path: root/chromium/ui/events/event_target.cc
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2013-12-11 21:33:03 +0100
committerAndras Becsi <andras.becsi@digia.com>2013-12-13 12:34:07 +0100
commitf2a33ff9cbc6d19943f1c7fbddd1f23d23975577 (patch)
tree0586a32aa390ade8557dfd6b4897f43a07449578 /chromium/ui/events/event_target.cc
parent5362912cdb5eea702b68ebe23702468d17c3017a (diff)
downloadqtwebengine-chromium-f2a33ff9cbc6d19943f1c7fbddd1f23d23975577.tar.gz
Update Chromium to branch 1650 (31.0.1650.63)
Change-Id: I57d8c832eaec1eb2364e0a8e7352a6dd354db99f Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'chromium/ui/events/event_target.cc')
-rw-r--r--chromium/ui/events/event_target.cc114
1 files changed, 114 insertions, 0 deletions
diff --git a/chromium/ui/events/event_target.cc b/chromium/ui/events/event_target.cc
new file mode 100644
index 00000000000..9aa53902ca9
--- /dev/null
+++ b/chromium/ui/events/event_target.cc
@@ -0,0 +1,114 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/events/event_target.h"
+
+#include <algorithm>
+
+#include "base/logging.h"
+#include "ui/events/event.h"
+
+namespace ui {
+
+EventTarget::EventTarget()
+ : target_handler_(NULL) {
+}
+
+EventTarget::~EventTarget() {
+}
+
+void EventTarget::AddPreTargetHandler(EventHandler* handler) {
+ pre_target_list_.push_back(handler);
+}
+
+void EventTarget::PrependPreTargetHandler(EventHandler* handler) {
+ pre_target_list_.insert(pre_target_list_.begin(), handler);
+}
+
+void EventTarget::RemovePreTargetHandler(EventHandler* handler) {
+ EventHandlerList::iterator find =
+ std::find(pre_target_list_.begin(),
+ pre_target_list_.end(),
+ handler);
+ if (find != pre_target_list_.end())
+ pre_target_list_.erase(find);
+}
+
+void EventTarget::AddPostTargetHandler(EventHandler* handler) {
+ post_target_list_.push_back(handler);
+}
+
+void EventTarget::RemovePostTargetHandler(EventHandler* handler) {
+ EventHandlerList::iterator find =
+ std::find(post_target_list_.begin(),
+ post_target_list_.end(),
+ handler);
+ if (find != post_target_list_.end())
+ post_target_list_.erase(find);
+}
+
+void EventTarget::OnEvent(Event* event) {
+ CHECK_EQ(this, event->target());
+ if (target_handler_)
+ target_handler_->OnEvent(event);
+ else
+ EventHandler::OnEvent(event);
+}
+
+void EventTarget::OnKeyEvent(KeyEvent* event) {
+ CHECK_EQ(this, event->target());
+ if (target_handler_)
+ target_handler_->OnKeyEvent(event);
+}
+
+void EventTarget::OnMouseEvent(MouseEvent* event) {
+ CHECK_EQ(this, event->target());
+ if (target_handler_)
+ target_handler_->OnMouseEvent(event);
+}
+
+void EventTarget::OnScrollEvent(ScrollEvent* event) {
+ CHECK_EQ(this, event->target());
+ if (target_handler_)
+ target_handler_->OnScrollEvent(event);
+}
+
+void EventTarget::OnTouchEvent(TouchEvent* event) {
+ CHECK_EQ(this, event->target());
+ if (target_handler_)
+ target_handler_->OnTouchEvent(event);
+}
+
+void EventTarget::OnGestureEvent(GestureEvent* event) {
+ CHECK_EQ(this, event->target());
+ if (target_handler_)
+ target_handler_->OnGestureEvent(event);
+}
+
+void EventTarget::GetPreTargetHandlers(EventHandlerList* list) {
+ EventTarget* target = this;
+ while (target) {
+ EventHandlerList::reverse_iterator it, rend;
+ for (it = target->pre_target_list_.rbegin(),
+ rend = target->pre_target_list_.rend();
+ it != rend;
+ ++it) {
+ list->insert(list->begin(), *it);
+ }
+ target = target->GetParentTarget();
+ }
+}
+
+void EventTarget::GetPostTargetHandlers(EventHandlerList* list) {
+ EventTarget* target = this;
+ while (target) {
+ for (EventHandlerList::iterator it = target->post_target_list_.begin(),
+ end = target->post_target_list_.end(); it != end; ++it) {
+ list->push_back(*it);
+ }
+ target = target->GetParentTarget();
+ }
+}
+
+} // namespace ui