| Index: mojo/services/window_manager/view_targeter.cc
|
| diff --git a/mojo/services/window_manager/view_targeter.cc b/mojo/services/window_manager/view_targeter.cc
|
| index 340deb2918342f3411fbb75d52d406e96c2b3214..2a29dc53362874dbb044fe1d36a5391f18eca222 100644
|
| --- a/mojo/services/window_manager/view_targeter.cc
|
| +++ b/mojo/services/window_manager/view_targeter.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "mojo/services/window_manager/view_targeter.h"
|
|
|
| +#include "mojo/services/window_manager/focus_controller.h"
|
| #include "mojo/services/window_manager/view_target.h"
|
|
|
| namespace mojo {
|
| @@ -14,9 +15,19 @@ ViewTargeter::~ViewTargeter() {}
|
|
|
| ui::EventTarget* ViewTargeter::FindTargetForEvent(ui::EventTarget* root,
|
| ui::Event* event) {
|
| - // TODO(erg): We currently don't deal with key events very well here; we need
|
| - // to implement the logic in the aura version to fix key events here.
|
| - return EventTargeter::FindTargetForEvent(root, event);
|
| + ViewTarget* view = static_cast<ViewTarget*>(root);
|
| + ViewTarget* target =
|
| + event->IsKeyEvent()
|
| + ? FindTargetForKeyEvent(view, *static_cast<ui::KeyEvent*>(event))
|
| + : static_cast<ViewTarget*>(
|
| + EventTargeter::FindTargetForEvent(root, event));
|
| +
|
| + // TODO(erg): The aura version of this method does a lot of work to handle
|
| + // dispatching to a target that isn't a child of |view|. For now, punt on
|
| + // this.
|
| + DCHECK_EQ(view->GetRoot(), target->GetRoot());
|
| +
|
| + return target;
|
| }
|
|
|
| ui::EventTarget* ViewTargeter::FindTargetForLocatedEvent(
|
| @@ -58,6 +69,16 @@ bool ViewTargeter::EventLocationInsideBounds(
|
| return gfx::Rect(view->GetBounds().size()).Contains(point);
|
| }
|
|
|
| +ViewTarget* ViewTargeter::FindTargetForKeyEvent(ViewTarget* view_target,
|
| + const ui::KeyEvent& key) {
|
| + FocusController* focus_controller = GetFocusController(view_target->view());
|
| + View* focused_view = focus_controller->GetFocusedView();
|
| + if (focused_view)
|
| + return ViewTarget::TargetFromView(focused_view);
|
| +
|
| + return view_target;
|
| +}
|
| +
|
| ViewTarget* ViewTargeter::FindTargetInRootView(ViewTarget* root_view,
|
| const ui::LocatedEvent& event) {
|
| // TODO(erg): This here is important because it resolves
|
|
|