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

Side by Side Diff: ui/views/view_targeter.cc

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months 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
« no previous file with comments | « ui/views/view_targeter.h ('k') | ui/views/view_targeter_delegate.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/views/view_targeter.h"
6
7 #include "ui/events/event_target.h"
8 #include "ui/views/focus/focus_manager.h"
9 #include "ui/views/view.h"
10 #include "ui/views/view_targeter_delegate.h"
11
12 namespace views {
13
14 ViewTargeter::ViewTargeter(ViewTargeterDelegate* delegate)
15 : delegate_(delegate) {
16 DCHECK(delegate_);
17 }
18
19 ViewTargeter::~ViewTargeter() {}
20
21 bool ViewTargeter::DoesIntersectRect(const View* target,
22 const gfx::Rect& rect) const {
23 return delegate_->DoesIntersectRect(target, rect);
24 }
25
26 View* ViewTargeter::TargetForRect(View* root, const gfx::Rect& rect) const {
27 return delegate_->TargetForRect(root, rect);
28 }
29
30 ui::EventTarget* ViewTargeter::FindTargetForEvent(ui::EventTarget* root,
31 ui::Event* event) {
32 View* view = static_cast<View*>(root);
33
34 if (event->IsKeyEvent())
35 return FindTargetForKeyEvent(view, *static_cast<ui::KeyEvent*>(event));
36
37 if (event->IsScrollEvent()) {
38 return FindTargetForScrollEvent(view,
39 *static_cast<ui::ScrollEvent*>(event));
40 }
41
42 if (event->IsGestureEvent()) {
43 ui::GestureEvent* gesture = event->AsGestureEvent();
44 View* gesture_target = FindTargetForGestureEvent(view, *gesture);
45 root->ConvertEventToTarget(gesture_target, gesture);
46 return gesture_target;
47 }
48
49 NOTREACHED() << "ViewTargeter does not yet support this event type.";
50 return NULL;
51 }
52
53 ui::EventTarget* ViewTargeter::FindNextBestTarget(
54 ui::EventTarget* previous_target,
55 ui::Event* event) {
56 if (!previous_target)
57 return NULL;
58
59 if (event->IsGestureEvent()) {
60 ui::GestureEvent* gesture = event->AsGestureEvent();
61 ui::EventTarget* next_target =
62 FindNextBestTargetForGestureEvent(previous_target, *gesture);
63 previous_target->ConvertEventToTarget(next_target, gesture);
64 return next_target;
65 }
66
67 return previous_target->GetParentTarget();
68 }
69
70 bool ViewTargeter::SubtreeCanAcceptEvent(
71 ui::EventTarget* target,
72 const ui::LocatedEvent& event) const {
73 NOTREACHED();
74 return false;
75 }
76
77 bool ViewTargeter::EventLocationInsideBounds(
78 ui::EventTarget* target,
79 const ui::LocatedEvent& event) const {
80 NOTREACHED();
81 return false;
82 }
83
84 View* ViewTargeter::FindTargetForKeyEvent(View* root, const ui::KeyEvent& key) {
85 if (root->GetFocusManager())
86 return root->GetFocusManager()->GetFocusedView();
87 return NULL;
88 }
89
90 View* ViewTargeter::FindTargetForScrollEvent(View* root,
91 const ui::ScrollEvent& scroll) {
92 gfx::Rect rect(scroll.location(), gfx::Size(1, 1));
93 return root->GetEffectiveViewTargeter()->TargetForRect(root, rect);
94 }
95
96 View* ViewTargeter::FindTargetForGestureEvent(View* root,
97 const ui::GestureEvent& gesture) {
98 // TODO(tdanderson): The only code path that performs targeting for gestures
99 // uses the ViewTargeter installed on the RootView (i.e.,
100 // a RootViewTargeter). Provide a default implementation
101 // here if we need to be able to perform gesture targeting
102 // starting at an arbitrary node in a Views tree.
103 NOTREACHED();
104 return NULL;
105 }
106
107 ui::EventTarget* ViewTargeter::FindNextBestTargetForGestureEvent(
108 ui::EventTarget* previous_target,
109 const ui::GestureEvent& gesture) {
110 NOTREACHED();
111 return NULL;
112 }
113
114 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/view_targeter.h ('k') | ui/views/view_targeter_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698