| Index: ui/wm/core/accelerator_filter.cc
|
| diff --git a/ui/wm/core/accelerator_filter.cc b/ui/wm/core/accelerator_filter.cc
|
| index 7993cd74a00a9ed518d51890bc4bce51b3f15939..46c05efbfd08bfd8ecd73fa736f9b058414338d9 100644
|
| --- a/ui/wm/core/accelerator_filter.cc
|
| +++ b/ui/wm/core/accelerator_filter.cc
|
| @@ -52,10 +52,10 @@ AcceleratorFilter::~AcceleratorFilter() {
|
|
|
| void AcceleratorFilter::OnKeyEvent(ui::KeyEvent* event) {
|
| const ui::EventType type = event->type();
|
| - if (type != ui::ET_KEY_PRESSED && type != ui::ET_KEY_RELEASED)
|
| - return;
|
| - if (event->is_char())
|
| + if ((type != ui::ET_KEY_PRESSED && type != ui::ET_KEY_RELEASED) ||
|
| + event->is_char() || !event->target()) {
|
| return;
|
| + }
|
|
|
| ui::Accelerator accelerator(event->key_code(),
|
| event->flags() & kModifierFlagMask);
|
| @@ -63,22 +63,10 @@ void AcceleratorFilter::OnKeyEvent(ui::KeyEvent* event) {
|
|
|
| delegate_->PreProcessAccelerator(accelerator);
|
|
|
| - // Handle special hardware keys like brightness and volume. However, some
|
| - // windows can override this behavior (e.g. Chrome v1 apps by default and
|
| - // Chrome v2 apps with permission) by setting a window property.
|
| - if (IsSystemKey(event->key_code()) &&
|
| - !delegate_->CanConsumeSystemKeys(*event)) {
|
| - delegate_->ProcessAccelerator(accelerator);
|
| - // These keys are always consumed regardless of whether they trigger an
|
| - // accelerator to prevent windows from seeing unexpected key up events.
|
| - event->StopPropagation();
|
| - return;
|
| - }
|
| -
|
| - if (!delegate_->ShouldProcessAcceleratorNow(*event, accelerator))
|
| - return;
|
| + AcceleratorDelegate::KeyType key_type = IsSystemKey(event->key_code()) ?
|
| + AcceleratorDelegate::SYSTEM_KEYS : AcceleratorDelegate::NORMAL_KEYS;
|
|
|
| - if (delegate_->ProcessAccelerator(accelerator))
|
| + if (delegate_->ProcessAccelerator(*event, accelerator, key_type))
|
| event->StopPropagation();
|
| }
|
|
|
|
|