| Index: ui/base/accelerators/accelerator_manager.h
|
| ===================================================================
|
| --- ui/base/accelerators/accelerator_manager.h (revision 123221)
|
| +++ 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"
|
| @@ -19,19 +20,34 @@
|
| // The AcceleratorManger is used to handle keyboard accelerators.
|
| class UI_EXPORT AcceleratorManager {
|
| public:
|
| + enum HandlerPriority {
|
| + kNormalPriority,
|
| + kHighPriority,
|
| + };
|
| +
|
| AcceleratorManager();
|
| ~AcceleratorManager();
|
|
|
| // 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 the priority of the handler.
|
| + // NOTE: In almost all cases, you should specify kPriorityNormal for this
|
| + // parameter. Setting it to kPriorityHigh prevents Chrome from sending the
|
| + // shortcut to the webpage if the renderer has focus, which is not desirable
|
| + // except for very isolated cases.
|
| + // |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,
|
| + HandlerPriority priority,
|
| + AcceleratorTarget* target);
|
|
|
| // Unregister the specified keyboard accelerator for the specified target.
|
| void Unregister(const Accelerator& accelerator, AcceleratorTarget* target);
|
| @@ -52,12 +68,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.
|
|
|