OLD | NEW |
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_VIEWS_FOCUS_FOCUS_MANAGER_H_ | 5 #ifndef UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ |
6 #define UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ | 6 #define UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 // In our example: | 68 // In our example: |
69 // hwnd_view_container_->GetWidget()->SetFocusTraversableParent( | 69 // hwnd_view_container_->GetWidget()->SetFocusTraversableParent( |
70 // native_control); | 70 // native_control); |
71 // | 71 // |
72 // Note that FocusTraversable do not have to be RootViews: AccessibleToolbarView | 72 // Note that FocusTraversable do not have to be RootViews: AccessibleToolbarView |
73 // is FocusTraversable. | 73 // is FocusTraversable. |
74 | 74 |
75 namespace ui { | 75 namespace ui { |
76 class AcceleratorTarget; | 76 class AcceleratorTarget; |
77 class AcceleratorManager; | 77 class AcceleratorManager; |
| 78 class KeyEvent; |
78 } | 79 } |
79 | 80 |
80 namespace views { | 81 namespace views { |
81 | 82 |
82 class FocusManagerDelegate; | 83 class FocusManagerDelegate; |
83 class FocusSearch; | 84 class FocusSearch; |
84 class RootView; | 85 class RootView; |
85 class View; | 86 class View; |
86 class Widget; | 87 class Widget; |
87 | 88 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 // a particular view. | 136 // a particular view. |
136 kReasonDirectFocusChange | 137 kReasonDirectFocusChange |
137 }; | 138 }; |
138 | 139 |
139 FocusManager(Widget* widget, FocusManagerDelegate* delegate); | 140 FocusManager(Widget* widget, FocusManagerDelegate* delegate); |
140 virtual ~FocusManager(); | 141 virtual ~FocusManager(); |
141 | 142 |
142 // Processes the passed key event for accelerators and tab traversal. | 143 // Processes the passed key event for accelerators and tab traversal. |
143 // Returns false if the event has been consumed and should not be processed | 144 // Returns false if the event has been consumed and should not be processed |
144 // further. | 145 // further. |
145 bool OnKeyEvent(const KeyEvent& event); | 146 bool OnKeyEvent(const ui::KeyEvent& event); |
146 | 147 |
147 // Returns true is the specified is part of the hierarchy of the window | 148 // Returns true is the specified is part of the hierarchy of the window |
148 // associated with this FocusManager. | 149 // associated with this FocusManager. |
149 bool ContainsView(View* view); | 150 bool ContainsView(View* view); |
150 | 151 |
151 // Advances the focus (backward if reverse is true). | 152 // Advances the focus (backward if reverse is true). |
152 void AdvanceFocus(bool reverse); | 153 void AdvanceFocus(bool reverse); |
153 | 154 |
154 // The FocusManager keeps track of the focused view within a RootView. | 155 // The FocusManager keeps track of the focused view within a RootView. |
155 View* GetFocusedView() { return focused_view_; } | 156 View* GetFocusedView() { return focused_view_; } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 // Activate the target associated with the specified accelerator. | 226 // Activate the target associated with the specified accelerator. |
226 // First, AcceleratorPressed handler of the most recently registered target | 227 // First, AcceleratorPressed handler of the most recently registered target |
227 // is called, and if that handler processes the event (i.e. returns true), | 228 // is called, and if that handler processes the event (i.e. returns true), |
228 // this method immediately returns. If not, we do the same thing on the next | 229 // this method immediately returns. If not, we do the same thing on the next |
229 // target, and so on. | 230 // target, and so on. |
230 // Returns true if an accelerator was activated. | 231 // Returns true if an accelerator was activated. |
231 bool ProcessAccelerator(const ui::Accelerator& accelerator); | 232 bool ProcessAccelerator(const ui::Accelerator& accelerator); |
232 | 233 |
233 // Resets menu key state if |event| is not menu key release. | 234 // Resets menu key state if |event| is not menu key release. |
234 // This is effective only on x11. | 235 // This is effective only on x11. |
235 void MaybeResetMenuKeyState(const KeyEvent& key); | 236 void MaybeResetMenuKeyState(const ui::KeyEvent& key); |
236 | 237 |
237 // Called by a RootView when a view within its hierarchy is removed | 238 // Called by a RootView when a view within its hierarchy is removed |
238 // from its parent. This will only be called by a RootView in a | 239 // from its parent. This will only be called by a RootView in a |
239 // hierarchy of Widgets that this FocusManager is attached to the | 240 // hierarchy of Widgets that this FocusManager is attached to the |
240 // parent Widget of. | 241 // parent Widget of. |
241 void ViewRemoved(View* removed); | 242 void ViewRemoved(View* removed); |
242 | 243 |
243 // Adds/removes a listener. The FocusChangeListener is notified every time | 244 // Adds/removes a listener. The FocusChangeListener is notified every time |
244 // the focused view is about to change. | 245 // the focused view is about to change. |
245 void AddFocusChangeListener(FocusChangeListener* listener); | 246 void AddFocusChangeListener(FocusChangeListener* listener); |
246 void RemoveFocusChangeListener(FocusChangeListener* listener); | 247 void RemoveFocusChangeListener(FocusChangeListener* listener); |
247 | 248 |
248 // Returns the AcceleratorTarget that should be activated for the specified | 249 // Returns the AcceleratorTarget that should be activated for the specified |
249 // keyboard accelerator, or NULL if no view is registered for that keyboard | 250 // keyboard accelerator, or NULL if no view is registered for that keyboard |
250 // accelerator. | 251 // accelerator. |
251 ui::AcceleratorTarget* GetCurrentTargetForAccelerator( | 252 ui::AcceleratorTarget* GetCurrentTargetForAccelerator( |
252 const ui::Accelerator& accelertor) const; | 253 const ui::Accelerator& accelertor) const; |
253 | 254 |
254 // Whether the given |accelerator| has a priority handler associated with it. | 255 // Whether the given |accelerator| has a priority handler associated with it. |
255 bool HasPriorityHandler(const ui::Accelerator& accelerator) const; | 256 bool HasPriorityHandler(const ui::Accelerator& accelerator) const; |
256 | 257 |
257 // Clears the native view having the focus. | 258 // Clears the native view having the focus. |
258 virtual void ClearNativeFocus(); | 259 virtual void ClearNativeFocus(); |
259 | 260 |
260 // Convenience method that returns true if the passed |key_event| should | 261 // Convenience method that returns true if the passed |key_event| should |
261 // trigger tab traversal (if it is a TAB key press with or without SHIFT | 262 // trigger tab traversal (if it is a TAB key press with or without SHIFT |
262 // pressed). | 263 // pressed). |
263 static bool IsTabTraversalKeyEvent(const KeyEvent& key_event); | 264 static bool IsTabTraversalKeyEvent(const ui::KeyEvent& key_event); |
264 | 265 |
265 private: | 266 private: |
266 // Returns the next focusable view. | 267 // Returns the next focusable view. |
267 View* GetNextFocusableView(View* starting_view, bool reverse, bool dont_loop); | 268 View* GetNextFocusableView(View* starting_view, bool reverse, bool dont_loop); |
268 | 269 |
269 // Returns the focusable view found in the FocusTraversable specified starting | 270 // Returns the focusable view found in the FocusTraversable specified starting |
270 // at the specified view. This traverses down along the FocusTraversable | 271 // at the specified view. This traverses down along the FocusTraversable |
271 // hierarchy. | 272 // hierarchy. |
272 // Returns NULL if no focusable view were found. | 273 // Returns NULL if no focusable view were found. |
273 View* FindFocusableView(FocusTraversable* focus_traversable, | 274 View* FindFocusableView(FocusTraversable* focus_traversable, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 | 308 |
308 // See description above getter. | 309 // See description above getter. |
309 bool is_changing_focus_; | 310 bool is_changing_focus_; |
310 | 311 |
311 DISALLOW_COPY_AND_ASSIGN(FocusManager); | 312 DISALLOW_COPY_AND_ASSIGN(FocusManager); |
312 }; | 313 }; |
313 | 314 |
314 } // namespace views | 315 } // namespace views |
315 | 316 |
316 #endif // UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ | 317 #endif // UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ |
OLD | NEW |