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

Side by Side Diff: ui/aura/env.h

Issue 2488723002: Reland of Improves focus/activation for aura-mus and DesktopNativeWidgetAura (Closed)
Patch Set: Created 4 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
« no previous file with comments | « ui/aura/client/focus_client.cc ('k') | ui/aura/env.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef UI_AURA_ENV_H_ 5 #ifndef UI_AURA_ENV_H_
6 #define UI_AURA_ENV_H_ 6 #define UI_AURA_ENV_H_
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/observer_list.h" 12 #include "base/observer_list.h"
13 #include "base/supports_user_data.h" 13 #include "base/supports_user_data.h"
14 #include "ui/aura/aura_export.h" 14 #include "ui/aura/aura_export.h"
15 #include "ui/events/event_handler.h" 15 #include "ui/events/event_handler.h"
16 #include "ui/events/event_target.h" 16 #include "ui/events/event_target.h"
17 #include "ui/gfx/geometry/point.h" 17 #include "ui/gfx/geometry/point.h"
18 18
19 namespace ui { 19 namespace ui {
20 class ContextFactory; 20 class ContextFactory;
21 class PlatformEventSource; 21 class PlatformEventSource;
22 } 22 }
23 namespace aura { 23 namespace aura {
24 24
25 namespace client {
26 class FocusClient;
27 }
28
25 namespace test { 29 namespace test {
26 class EnvTestHelper; 30 class EnvTestHelper;
27 } 31 }
28 32
29 class EnvObserver; 33 class EnvObserver;
30 class InputStateLookup; 34 class InputStateLookup;
31 class Window; 35 class Window;
32 class WindowPort; 36 class WindowPort;
33 class WindowTreeHost; 37 class WindowTreeHost;
34 38
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 71
68 // Whether any touch device is currently down. 72 // Whether any touch device is currently down.
69 bool is_touch_down() const { return is_touch_down_; } 73 bool is_touch_down() const { return is_touch_down_; }
70 void set_touch_down(bool value) { is_touch_down_ = value; } 74 void set_touch_down(bool value) { is_touch_down_ = value; }
71 75
72 void set_context_factory(ui::ContextFactory* context_factory) { 76 void set_context_factory(ui::ContextFactory* context_factory) {
73 context_factory_ = context_factory; 77 context_factory_ = context_factory;
74 } 78 }
75 ui::ContextFactory* context_factory() { return context_factory_; } 79 ui::ContextFactory* context_factory() { return context_factory_; }
76 80
81 // Sets the active FocusClient and the window the FocusClient is associated
82 // with. |window| is not necessarily the window that actually has focus.
83 // |window| may be null, which indicates all windows share a FocusClient.
84 void SetActiveFocusClient(client::FocusClient* focus_client,
85 Window* focus_client_root);
86 client::FocusClient* active_focus_client() { return active_focus_client_; }
87 Window* active_focus_client_root() { return active_focus_client_root_; }
88
77 private: 89 private:
90 class ActiveFocusClientWindowObserver;
91
78 friend class test::EnvTestHelper; 92 friend class test::EnvTestHelper;
79 friend class Window; 93 friend class Window;
80 friend class WindowTreeHost; 94 friend class WindowTreeHost;
81 95
82 explicit Env(const WindowPortFactory& window_port_factory); 96 explicit Env(const WindowPortFactory& window_port_factory);
83 97
84 void Init(); 98 void Init();
85 99
86 // Called by the Window when it is initialized. Notifies observers. 100 // Called by the Window when it is initialized. Notifies observers.
87 void NotifyWindowInitialized(Window* window); 101 void NotifyWindowInitialized(Window* window);
88 102
89 // Called by the WindowTreeHost when it is initialized. Notifies observers. 103 // Called by the WindowTreeHost when it is initialized. Notifies observers.
90 void NotifyHostInitialized(WindowTreeHost* host); 104 void NotifyHostInitialized(WindowTreeHost* host);
91 105
92 // Invoked by WindowTreeHost when it is activated. Notifies observers. 106 // Invoked by WindowTreeHost when it is activated. Notifies observers.
93 void NotifyHostActivated(WindowTreeHost* host); 107 void NotifyHostActivated(WindowTreeHost* host);
94 108
109 void OnActiveFocusClientWindowDestroying();
110
95 // Overridden from ui::EventTarget: 111 // Overridden from ui::EventTarget:
96 bool CanAcceptEvent(const ui::Event& event) override; 112 bool CanAcceptEvent(const ui::Event& event) override;
97 ui::EventTarget* GetParentTarget() override; 113 ui::EventTarget* GetParentTarget() override;
98 std::unique_ptr<ui::EventTargetIterator> GetChildIterator() const override; 114 std::unique_ptr<ui::EventTargetIterator> GetChildIterator() const override;
99 ui::EventTargeter* GetEventTargeter() override; 115 ui::EventTargeter* GetEventTargeter() override;
100 116
101 WindowPortFactory window_port_factory_; 117 WindowPortFactory window_port_factory_;
102 118
103 base::ObserverList<EnvObserver> observers_; 119 base::ObserverList<EnvObserver> observers_;
104 120
105 int mouse_button_flags_; 121 int mouse_button_flags_;
106 // Location of last mouse event, in screen coordinates. 122 // Location of last mouse event, in screen coordinates.
107 gfx::Point last_mouse_location_; 123 gfx::Point last_mouse_location_;
108 bool is_touch_down_; 124 bool is_touch_down_;
109 125
110 std::unique_ptr<InputStateLookup> input_state_lookup_; 126 std::unique_ptr<InputStateLookup> input_state_lookup_;
111 std::unique_ptr<ui::PlatformEventSource> event_source_; 127 std::unique_ptr<ui::PlatformEventSource> event_source_;
112 128
113 ui::ContextFactory* context_factory_; 129 ui::ContextFactory* context_factory_;
114 130
131 Window* active_focus_client_root_ = nullptr;
132 client::FocusClient* active_focus_client_ = nullptr;
133 std::unique_ptr<ActiveFocusClientWindowObserver>
134 active_focus_client_window_observer_;
135
115 DISALLOW_COPY_AND_ASSIGN(Env); 136 DISALLOW_COPY_AND_ASSIGN(Env);
116 }; 137 };
117 138
118 } // namespace aura 139 } // namespace aura
119 140
120 #endif // UI_AURA_ENV_H_ 141 #endif // UI_AURA_ENV_H_
OLDNEW
« no previous file with comments | « ui/aura/client/focus_client.cc ('k') | ui/aura/env.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698