| Index: ui/wm/core/accelerator_filter.cc
|
| diff --git a/ui/wm/core/accelerator_filter.cc b/ui/wm/core/accelerator_filter.cc
|
| index 50102622de68355cb4774029c826efc0049219f9..706cb2e5065abad119968c95c7d0210d16a6ae56 100644
|
| --- a/ui/wm/core/accelerator_filter.cc
|
| +++ b/ui/wm/core/accelerator_filter.cc
|
| @@ -11,9 +11,6 @@
|
| namespace wm {
|
| namespace {
|
|
|
| -const int kModifierFlagMask =
|
| - (ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN);
|
| -
|
| // Returns true if |key_code| is a key usually handled directly by the shell.
|
| bool IsSystemKey(ui::KeyboardCode key_code) {
|
| #if defined(OS_CHROMEOS)
|
| @@ -52,14 +49,13 @@ AcceleratorFilter::~AcceleratorFilter() {
|
|
|
| void AcceleratorFilter::OnKeyEvent(ui::KeyEvent* event) {
|
| const ui::EventType type = event->type();
|
| + DCHECK(event->target());
|
| if ((type != ui::ET_KEY_PRESSED && type != ui::ET_KEY_RELEASED) ||
|
| - event->is_char()) {
|
| + event->is_char() || !event->target()) {
|
| return;
|
| }
|
|
|
| - ui::Accelerator accelerator(event->key_code(),
|
| - event->flags() & kModifierFlagMask);
|
| - accelerator.set_type(event->type());
|
| + ui::Accelerator accelerator = CreateAcceleratorFromKeyEvent(*event);
|
|
|
| delegate_->PreProcessAccelerator(accelerator);
|
|
|
| @@ -71,4 +67,15 @@ void AcceleratorFilter::OnKeyEvent(ui::KeyEvent* event) {
|
| event->StopPropagation();
|
| }
|
|
|
| +ui::Accelerator CreateAcceleratorFromKeyEvent(const ui::KeyEvent& key_event) {
|
| + const int kModifierFlagMask =
|
| + (ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN);
|
| +
|
| + ui::Accelerator accelerator(key_event.key_code(),
|
| + key_event.flags() & kModifierFlagMask);
|
| + if (key_event.type() == ui::ET_KEY_RELEASED)
|
| + accelerator.set_type(ui::ET_KEY_RELEASED);
|
| + return accelerator;
|
| +}
|
| +
|
| } // namespace wm
|
|
|