Index: ui/views/focus/focus_manager.h |
diff --git a/ui/views/focus/focus_manager.h b/ui/views/focus/focus_manager.h |
index 3ba730d55e337f07b78a6708da9cfddfb6c99a3b..147ca5e64ae03c60e68dbd16eec857c7d6052994 100644 |
--- a/ui/views/focus/focus_manager.h |
+++ b/ui/views/focus/focus_manager.h |
@@ -120,7 +120,7 @@ class VIEWS_EXPORT FocusChangeListener { |
virtual ~FocusChangeListener() {} |
}; |
-class VIEWS_EXPORT FocusManager { |
+class VIEWS_EXPORT FocusManager : public ui::AcceleratorProcessor { |
public: |
// The reason why the focus changed. |
enum FocusChangeReason { |
@@ -147,8 +147,8 @@ class VIEWS_EXPORT FocusManager { |
kNoWrap |
}; |
- FocusManager(Widget* widget, FocusManagerDelegate* delegate); |
- virtual ~FocusManager(); |
+ FocusManager(Widget* widget); |
sky
2015/01/08 23:39:26
explicit
Andre
2015/01/09 00:06:15
Done.
|
+ ~FocusManager() override; |
// Processes the passed key event for accelerators and keyboard traversal. |
// Returns false if the event has been consumed and should not be processed |
@@ -225,13 +225,6 @@ class VIEWS_EXPORT FocusManager { |
void FocusTextInputClient(View* view); |
void BlurTextInputClient(View* view); |
- // Disable shortcut handling. |
- static void set_shortcut_handling_suspended(bool suspended) { |
- shortcut_handling_suspended_ = suspended; |
- } |
- // Returns whether shortcut handling is currently suspended. |
- bool shortcut_handling_suspended() { return shortcut_handling_suspended_; } |
- |
// Register a keyboard accelerator for the specified target. If multiple |
// targets are registered for an accelerator, a target registered later has |
// higher priority. |
@@ -260,14 +253,6 @@ class VIEWS_EXPORT FocusManager { |
// Unregister all keyboard accelerator for the specified target. |
void UnregisterAccelerators(ui::AcceleratorTarget* target); |
- // Activate the target associated with the specified accelerator. |
- // First, AcceleratorPressed handler of the most recently registered target |
- // is called, and if that handler processes the event (i.e. returns true), |
- // this method immediately returns. If not, we do the same thing on the next |
- // target, and so on. |
- // Returns true if an accelerator was activated. |
- bool ProcessAccelerator(const ui::Accelerator& accelerator); |
- |
// Resets menu key state if |event| is not menu key release. |
// This is effective only on x11. |
void MaybeResetMenuKeyState(const ui::KeyEvent& key); |
@@ -283,11 +268,13 @@ class VIEWS_EXPORT FocusManager { |
void AddFocusChangeListener(FocusChangeListener* listener); |
void RemoveFocusChangeListener(FocusChangeListener* listener); |
- // Returns the AcceleratorTarget that should be activated for the specified |
- // keyboard accelerator, or NULL if no view is registered for that keyboard |
- // accelerator. |
- ui::AcceleratorTarget* GetCurrentTargetForAccelerator( |
- const ui::Accelerator& accelerator) const; |
+ // Adds/removes an accelerator processor. |
sky
2015/01/08 23:39:26
How about test coverage of some of this new functi
|
+ // PreProcessors are given a chance to process an accelerator before normal |
+ // processing. |
+ // PostProcessors are given a chance to process unhandled accelerators. |
+ void AddAcceleratorPreProcessor(ui::AcceleratorProcessor*); |
sky
2015/01/08 23:39:26
style guide says you should have names here.
Andre
2015/01/09 00:06:15
Done.
|
+ void AddAcceleratorPostProcessor(ui::AcceleratorProcessor*); |
+ void RemoveAcceleratorProcessor(ui::AcceleratorProcessor*); |
// Whether the given |accelerator| has a priority handler associated with it. |
bool HasPriorityHandler(const ui::Accelerator& accelerator) const; |
@@ -331,6 +318,11 @@ class VIEWS_EXPORT FocusManager { |
bool reverse, |
bool dont_loop); |
+ // Overridden from ui::AcceleratorProcessor: |
+ bool ProcessAccelerator(const ui::Accelerator& accelerator) override; |
+ ui::AcceleratorTarget* GetTargetForAccelerator( |
+ const ui::Accelerator& accelerator) const override; |
+ |
private: |
// Returns the focusable view found in the FocusTraversable specified starting |
// at the specified view. This traverses down along the FocusTraversable |
@@ -344,25 +336,20 @@ class VIEWS_EXPORT FocusManager { |
// and should not be processed further. |
bool ProcessArrowKeyTraversal(const ui::KeyEvent& event); |
- // Keeps track of whether shortcut handling is currently suspended. |
- static bool shortcut_handling_suspended_; |
- |
// Whether arrow key traversal is enabled. |
static bool arrow_key_traversal_enabled_; |
// The top-level Widget this FocusManager is associated with. |
Widget* widget_; |
- // The object which handles an accelerator when |accelerator_manager_| doesn't |
- // handle it. |
- scoped_ptr<FocusManagerDelegate> delegate_; |
- |
// The view that currently is focused. |
View* focused_view_; |
// The AcceleratorManager this FocusManager is associated with. |
scoped_ptr<ui::AcceleratorManager> accelerator_manager_; |
+ std::list<ui::AcceleratorProcessor*> accelerator_processors_; |
+ |
// The storage id used in the ViewStorage to store/restore the view that last |
// had focus. |
int stored_focused_view_storage_id_; |