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. |