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

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

Issue 718573002: Revert "Remove aura and make a pure mojo::View version of the aura::Window FocusController." (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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
(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 "mojo/services/window_manager/view_target.h"
6
7 #include "mojo/services/public/cpp/view_manager/view.h"
8 #include "mojo/services/window_manager/window_manager_app.h"
9 #include "ui/events/event.h"
10 #include "ui/events/event_target_iterator.h"
11 #include "ui/events/event_targeter.h"
12
13 namespace mojo {
14
15 class ViewTargeter : public ui::EventTargeter {};
16
17 ViewTarget::ViewTarget(WindowManagerApp* app, View* view_to_wrap)
18 : app_(app),
19 view_(view_to_wrap) {
20 }
21
22 ViewTarget::~ViewTarget() {
23 // We don't own our children or |view_|.
24 }
25
26 bool ViewTarget::HasParent() const {
27 return view_->parent();
28 }
29
30 bool ViewTarget::IsVisible() const {
31 return view_->visible();
32 }
33
34 void ViewTarget::AddChild(ViewTarget* view) {
35 children_.push_back(view);
36 }
37
38 scoped_ptr<ViewTargeter> ViewTarget::SetEventTargeter(
39 scoped_ptr<ViewTargeter> targeter) {
40 scoped_ptr<ViewTargeter> old_targeter = targeter_.Pass();
41 targeter_ = targeter.Pass();
42 return old_targeter.Pass();
43 }
44
45 bool ViewTarget::CanAcceptEvent(const ui::Event& event) {
46 // We need to make sure that a touch cancel event and any gesture events it
47 // creates can always reach the window. This ensures that we receive a valid
48 // touch / gesture stream.
49 if (event.IsEndingEvent())
50 return true;
51
52 if (!view_->visible())
53 return false;
54
55 // The top-most window can always process an event.
56 if (!view_->parent())
57 return true;
58
59 // For located events (i.e. mouse, touch etc.), an assumption is made that
60 // windows that don't have a default event-handler cannot process the event
61 // (see more in GetWindowForPoint()). This assumption is not made for key
62 // events.
63 return event.IsKeyEvent() || target_handler();
64 }
65
66 ui::EventTarget* ViewTarget::GetParentTarget() {
67 if (!view_->parent()) {
68 // We are the root node.
69 return nullptr;
70 }
71
72 return app_->GetViewTargetForViewId(view_->parent()->id());
73 }
74
75 scoped_ptr<ui::EventTargetIterator> ViewTarget::GetChildIterator() const {
76 return scoped_ptr<ui::EventTargetIterator>(
77 new ui::EventTargetIteratorImpl<ViewTarget>(children_));
78 }
79
80 ui::EventTargeter* ViewTarget::GetEventTargeter() {
81 return targeter_.get();
82 }
83
84 void ViewTarget::ConvertEventToTarget(ui::EventTarget* target,
85 ui::LocatedEvent* event) {
86 // TODO(erg): Actually doing enabling this line requires doing some partially
87 // specialized template cruft. Punt for now.
88 //
89 // event->ConvertLocationToTarget(this,
90 // static_cast<ViewTarget*>(target));
91 }
92
93 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/window_manager/view_target.h ('k') | mojo/services/window_manager/view_targeter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698