root/ui/events/event_target.cc

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ConvertEventToTarget
  2. AddPreTargetHandler
  3. PrependPreTargetHandler
  4. RemovePreTargetHandler
  5. AddPostTargetHandler
  6. RemovePostTargetHandler
  7. IsPreTargetListEmpty
  8. OnEvent
  9. OnKeyEvent
  10. OnMouseEvent
  11. OnScrollEvent
  12. OnTouchEvent
  13. OnGestureEvent
  14. GetPreTargetHandlers
  15. GetPostTargetHandlers

// 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::ConvertEventToTarget(EventTarget* target,
                                       LocatedEvent* event) {
}

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);
}

bool EventTarget::IsPreTargetListEmpty() const {
  return pre_target_list_.empty();
}

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

/* [<][>][^][v][top][bottom][index][help] */