blob: 5d2bc2996676af193f8a110983295a71a63b9d0b [file] [log] [blame]
// Copyright 2014 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 "services/window_manager/view_event_dispatcher.h"
#include "mojo/services/view_manager/cpp/view.h"
#include "services/window_manager/view_target.h"
namespace window_manager {
ViewEventDispatcher::ViewEventDispatcher()
: event_dispatch_target_(nullptr),
old_dispatch_target_(nullptr) {
}
ViewEventDispatcher::~ViewEventDispatcher() {}
void ViewEventDispatcher::SetRootViewTarget(ViewTarget* root_view_target) {
root_view_target_ = root_view_target;
}
ui::EventTarget* ViewEventDispatcher::GetRootTarget() {
return root_view_target_;
}
void ViewEventDispatcher::OnEventProcessingStarted(ui::Event* event) {
}
bool ViewEventDispatcher::CanDispatchToTarget(ui::EventTarget* target) {
return event_dispatch_target_ == target;
}
ui::EventDispatchDetails ViewEventDispatcher::PreDispatchEvent(
ui::EventTarget* target,
ui::Event* event) {
// TODO(erg): PreDispatch in aura::WindowEventDispatcher does many, many
// things. It, and the functions split off for different event types, are
// most of the file.
old_dispatch_target_ = event_dispatch_target_;
event_dispatch_target_ = static_cast<ViewTarget*>(target);
return ui::EventDispatchDetails();
}
ui::EventDispatchDetails ViewEventDispatcher::PostDispatchEvent(
ui::EventTarget* target,
const ui::Event& event) {
// TODO(erg): Not at all as long as PreDispatchEvent, but still missing core
// details.
event_dispatch_target_ = old_dispatch_target_;
old_dispatch_target_ = nullptr;
return ui::EventDispatchDetails();
}
} // namespace window_manager