Chromium Code Reviews| Index: ui/base/accelerators/accelerator_manager.h |
| =================================================================== |
| --- ui/base/accelerators/accelerator_manager.h (revision 122745) |
| +++ ui/base/accelerators/accelerator_manager.h (working copy) |
| @@ -8,6 +8,7 @@ |
| #include <list> |
| #include <map> |
| +#include <utility> |
| #include "base/basictypes.h" |
| #include "ui/base/accelerators/accelerator.h" |
| @@ -25,13 +26,23 @@ |
| // Register a keyboard accelerator for the specified target. If multiple |
| // targets are registered for an accelerator, a target registered later has |
| // higher priority. |
| + // |accelerator| is the accelerator to register. |
| + // |priority| denotes whether the |target| is a priority handler or not. |
| + // NOTE: In almost all cases, you should specify |false| for this parameter. |
| + // Setting it to |true| prevents Chrome from sending the shortcut to the |
| + // webpage if the renderer has focus, which is not desirable except for |
| + // isolated cases. |
|
sadrul
2012/02/21 16:17:28
I have seen other code use enums for different kin
Finnur
2012/02/21 21:58:21
I thought about this and decided that if we have m
sky
2012/02/22 18:02:52
The style guide encourages enums for this case (se
|
| + // |target| is the AcceleratorTarget that handles the event once the |
| + // accelerator is pressed. |
| // Note that we are currently limited to accelerators that are either: |
| // - a key combination including Ctrl or Alt |
| // - the escape key |
| // - the enter key |
| // - any F key (F1, F2, F3 ...) |
| // - any browser specific keys (as available on special keyboards) |
| - void Register(const Accelerator& accelerator, AcceleratorTarget* target); |
| + void Register(const Accelerator& accelerator, |
| + bool priority, |
| + AcceleratorTarget* target); |
| // Unregister the specified keyboard accelerator for the specified target. |
| void Unregister(const Accelerator& accelerator, AcceleratorTarget* target); |
| @@ -52,12 +63,18 @@ |
| // accelerator. |
| AcceleratorTarget* GetCurrentTarget(const Accelerator& accelertor) const; |
| + // Whether the given |accelerator| has a priority handler associated with it. |
| + bool HasPriorityHandler(const Accelerator& accelerator) const; |
| + |
| private: |
| bool ShouldHandle(const Accelerator& accelerator) const; |
| // The accelerators and associated targets. |
| typedef std::list<AcceleratorTarget*> AcceleratorTargetList; |
| - typedef std::map<Accelerator, AcceleratorTargetList> AcceleratorMap; |
| + // This construct pairs together a |bool| (denoting whether the list contains |
| + // a priority_handler at the front) with the list of AcceleratorTargets. |
| + typedef std::pair<bool, AcceleratorTargetList> AcceleratorTargets; |
| + typedef std::map<Accelerator, AcceleratorTargets> AcceleratorMap; |
| AcceleratorMap accelerators_; |
| // An event passed to Process() last time. |