diff options
author | Andras Becsi <andras.becsi@digia.com> | 2013-12-11 21:33:03 +0100 |
---|---|---|
committer | Andras Becsi <andras.becsi@digia.com> | 2013-12-13 12:34:07 +0100 |
commit | f2a33ff9cbc6d19943f1c7fbddd1f23d23975577 (patch) | |
tree | 0586a32aa390ade8557dfd6b4897f43a07449578 /chromium/ui/events/event_target.cc | |
parent | 5362912cdb5eea702b68ebe23702468d17c3017a (diff) | |
download | qtwebengine-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.cc | 114 |
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 |