Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: mojo/services/window_manager/view_targeter.cc

Issue 724973003: Get event targetting working for mouse events. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Move on top of the recently committed local view property stuff. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/services/window_manager/view_targeter.h" 5 #include "mojo/services/window_manager/view_targeter.h"
6 6
7 #include "mojo/services/window_manager/view_target.h"
8
7 namespace mojo { 9 namespace mojo {
8 10
9 ViewTargeter::ViewTargeter() {} 11 ViewTargeter::ViewTargeter() {}
10 12
11 ViewTargeter::~ViewTargeter() {} 13 ViewTargeter::~ViewTargeter() {}
12 14
15 ui::EventTarget* ViewTargeter::FindTargetForEvent(
16 ui::EventTarget* root,
17 ui::Event* event) {
18 // TODO(erg): We currently don't deal with key events very well here; we need
19 // to implement the logic in the aura version to fix key events here.
20 return EventTargeter::FindTargetForEvent(root, event);
21 }
22
23 ui::EventTarget* ViewTargeter::FindTargetForLocatedEvent(
24 ui::EventTarget* root,
25 ui::LocatedEvent* event) {
26 ViewTarget* view = static_cast<ViewTarget*>(root);
27 if (!view->HasParent()) {
28 ViewTarget* target = FindTargetInRootView(view, *event);
29 if (target) {
30 view->ConvertEventToTarget(target, event);
31 return target;
32 }
33 }
34 return EventTargeter::FindTargetForLocatedEvent(view, event);
35 }
36
37 bool ViewTargeter::SubtreeCanAcceptEvent(
38 ui::EventTarget* target,
39 const ui::LocatedEvent& event) const {
40 ViewTarget* view = static_cast<ViewTarget*>(target);
41
42 if (!view->IsVisible())
43 return false;
44
45 // TODO(erg): We may need to keep track of the parent on ViewTarget, because
46 // we have a check here about
47 // WindowDelegate::ShouldDescendIntoChildForEventHandling().
48
49 return true;
50 }
51
52 bool ViewTargeter::EventLocationInsideBounds(
53 ui::EventTarget* target,
54 const ui::LocatedEvent& event) const {
55 ViewTarget* view = static_cast<ViewTarget*>(target);
56 gfx::Point point = event.location();
57 ViewTarget* parent = view->GetParent();
58 if (parent)
59 ViewTarget::ConvertPointToTarget(parent, view, &point);
60 return gfx::Rect(view->GetBounds().size()).Contains(point);
61 }
62
63 ViewTarget* ViewTargeter::FindTargetInRootView(ViewTarget* root_view,
64 const ui::LocatedEvent& event) {
65 // TODO(erg): This here is important because it resolves
66 // mouse_pressed_handler() in the aura version. This is what makes sure
67 // that a view gets both the mouse down and up.
68
69 // TODO(erg): We redirect to a currently active capture window here. Add this
70 // when we have capture working.
71
72 // TODO(erg): There's a whole bunch of junk about handling touch events
73 // here. Handle later.
74
75 return nullptr;
76 }
77
13 } // namespace mojo 78 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698