| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 VIEWS_FOCUS_FOCUS_MANAGER_H_ | 5 #ifndef VIEWS_FOCUS_FOCUS_MANAGER_H_ |
| 6 #define VIEWS_FOCUS_FOCUS_MANAGER_H_ | 6 #define VIEWS_FOCUS_FOCUS_MANAGER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <list> | 9 #include <list> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 void ValidateFocusedView(); | 218 void ValidateFocusedView(); |
| 219 | 219 |
| 220 // Stores and restores the focused view. Used when the window becomes | 220 // Stores and restores the focused view. Used when the window becomes |
| 221 // active/inactive. | 221 // active/inactive. |
| 222 void StoreFocusedView(); | 222 void StoreFocusedView(); |
| 223 void RestoreFocusedView(); | 223 void RestoreFocusedView(); |
| 224 | 224 |
| 225 // Clears the stored focused view. | 225 // Clears the stored focused view. |
| 226 void ClearStoredFocusedView(); | 226 void ClearStoredFocusedView(); |
| 227 | 227 |
| 228 // Returns true if in the process of changing the focused view. |
| 229 bool is_changing_focus() const { return is_changing_focus_; } |
| 230 |
| 228 // Register a keyboard accelerator for the specified target. If multiple | 231 // Register a keyboard accelerator for the specified target. If multiple |
| 229 // targets are registered for an accelerator, a target registered later has | 232 // targets are registered for an accelerator, a target registered later has |
| 230 // higher priority. | 233 // higher priority. |
| 231 // Note that we are currently limited to accelerators that are either: | 234 // Note that we are currently limited to accelerators that are either: |
| 232 // - a key combination including Ctrl or Alt | 235 // - a key combination including Ctrl or Alt |
| 233 // - the escape key | 236 // - the escape key |
| 234 // - the enter key | 237 // - the enter key |
| 235 // - any F key (F1, F2, F3 ...) | 238 // - any F key (F1, F2, F3 ...) |
| 236 // - any browser specific keys (as available on special keyboards) | 239 // - any browser specific keys (as available on special keyboards) |
| 237 void RegisterAccelerator(const Accelerator& accelerator, | 240 void RegisterAccelerator(const Accelerator& accelerator, |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 FocusChangeReason focus_change_reason_; | 309 FocusChangeReason focus_change_reason_; |
| 307 | 310 |
| 308 // The accelerators and associated targets. | 311 // The accelerators and associated targets. |
| 309 typedef std::list<AcceleratorTarget*> AcceleratorTargetList; | 312 typedef std::list<AcceleratorTarget*> AcceleratorTargetList; |
| 310 typedef std::map<Accelerator, AcceleratorTargetList> AcceleratorMap; | 313 typedef std::map<Accelerator, AcceleratorTargetList> AcceleratorMap; |
| 311 AcceleratorMap accelerators_; | 314 AcceleratorMap accelerators_; |
| 312 | 315 |
| 313 // The list of registered FocusChange listeners. | 316 // The list of registered FocusChange listeners. |
| 314 ObserverList<FocusChangeListener, true> focus_change_listeners_; | 317 ObserverList<FocusChangeListener, true> focus_change_listeners_; |
| 315 | 318 |
| 319 // See description above getter. |
| 320 bool is_changing_focus_; |
| 321 |
| 316 DISALLOW_COPY_AND_ASSIGN(FocusManager); | 322 DISALLOW_COPY_AND_ASSIGN(FocusManager); |
| 317 }; | 323 }; |
| 318 | 324 |
| 319 // A basic helper class that is used to disable native focus change | 325 // A basic helper class that is used to disable native focus change |
| 320 // notifications within a scope. | 326 // notifications within a scope. |
| 321 class AutoNativeNotificationDisabler { | 327 class AutoNativeNotificationDisabler { |
| 322 public: | 328 public: |
| 323 AutoNativeNotificationDisabler() { | 329 AutoNativeNotificationDisabler() { |
| 324 FocusManager::GetWidgetFocusManager()->DisableNotifications(); | 330 FocusManager::GetWidgetFocusManager()->DisableNotifications(); |
| 325 } | 331 } |
| 326 | 332 |
| 327 ~AutoNativeNotificationDisabler() { | 333 ~AutoNativeNotificationDisabler() { |
| 328 FocusManager::GetWidgetFocusManager()->EnableNotifications(); | 334 FocusManager::GetWidgetFocusManager()->EnableNotifications(); |
| 329 } | 335 } |
| 330 private: | 336 private: |
| 331 DISALLOW_COPY_AND_ASSIGN(AutoNativeNotificationDisabler); | 337 DISALLOW_COPY_AND_ASSIGN(AutoNativeNotificationDisabler); |
| 332 }; | 338 }; |
| 333 | 339 |
| 334 } // namespace views | 340 } // namespace views |
| 335 | 341 |
| 336 #endif // VIEWS_FOCUS_FOCUS_MANAGER_H_ | 342 #endif // VIEWS_FOCUS_FOCUS_MANAGER_H_ |
| OLD | NEW |