Chromium Code Reviews| Index: chrome/browser/chromeos/events/event_rewriter.cc |
| diff --git a/chrome/browser/chromeos/events/event_rewriter.cc b/chrome/browser/chromeos/events/event_rewriter.cc |
| index 879e85a0d22706dff47da9a82b62563493210b06..9dcce100ca93f4c2ed76fc2d66dae007784f7f4a 100644 |
| --- a/chrome/browser/chromeos/events/event_rewriter.cc |
| +++ b/chrome/browser/chromeos/events/event_rewriter.cc |
| @@ -105,7 +105,7 @@ bool IsISOLevel5ShiftUsedByCurrentInputMethod() { |
| return manager->IsISOLevel5ShiftUsedByCurrentInputMethod(); |
| } |
| -bool IsExtensionCommandRegistered(const ui::KeyEvent& key_event) { |
| +bool IsExtensionCommandRegistered(ui::KeyboardCode key_code, int flags) { |
| // Some keyboard events for ChromeOS get rewritten, such as: |
| // Search+Shift+Left gets converted to Shift+Home (BeginDocument). |
| // This doesn't make sense if the user has assigned that shortcut |
| @@ -120,9 +120,9 @@ bool IsExtensionCommandRegistered(const ui::KeyEvent& key_event) { |
| if (!profile || !extensions::ExtensionCommandsGlobalRegistry::Get(profile)) |
| return false; |
| - int modifiers = key_event.flags() & (ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | |
| - ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN); |
| - ui::Accelerator accelerator(key_event.key_code(), modifiers); |
| + int modifiers = flags & (ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | |
| + ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN); |
| + ui::Accelerator accelerator(key_code, modifiers); |
| return extensions::ExtensionCommandsGlobalRegistry::Get(profile) |
| ->IsRegistered(accelerator); |
| } |
| @@ -383,7 +383,7 @@ bool EventRewriter::RewriteWithKeyboardRemappingsByKeyCode( |
| ui::EventRewriteStatus EventRewriter::RewriteKeyEvent( |
| const ui::KeyEvent& key_event, |
| scoped_ptr<ui::Event>* rewritten_event) { |
| - if (IsExtensionCommandRegistered(key_event)) |
| + if (IsExtensionCommandRegistered(key_event.key_code(), key_event.flags())) |
| return ui::EVENT_REWRITE_CONTINUE; |
| if (key_event.source_device_id() != ui::ED_UNKNOWN_DEVICE) |
| DeviceKeyPressedOrReleased(key_event.source_device_id()); |
| @@ -395,16 +395,23 @@ ui::EventRewriteStatus EventRewriter::RewriteKeyEvent( |
| RewriteNumPadKeys(key_event, &state); |
| } |
| ui::EventRewriteStatus status = ui::EVENT_REWRITE_CONTINUE; |
| + bool is_sticky_key_extension_command = false; |
| if (sticky_keys_controller_) { |
| status = sticky_keys_controller_->RewriteKeyEvent( |
| key_event, state.key_code, &state.flags); |
| + is_sticky_key_extension_command = |
| + IsExtensionCommandRegistered(state.key_code, state.flags); |
|
Finnur
2014/09/24 10:48:41
This block should probably be below line 405.
David Tseng
2014/09/24 16:24:28
Done.
|
| if (status == ui::EVENT_REWRITE_DISCARD) |
| return ui::EVENT_REWRITE_DISCARD; |
| } |
| + // Only rewrite keys involving the search modifier if it has no extensions |
| + // binding the command. |
|
Finnur
2014/09/24 10:48:41
This comment seems a little out of place here. Why
David Tseng
2014/09/24 16:24:28
Was fixated on Search for the fix; rephrased to be
|
| + if (!is_sticky_key_extension_command) { |
| if (!(key_event.flags() & ui::EF_FINAL)) { |
|
Finnur
2014/09/24 10:48:41
The indentation here is now wrong, but we anyway p
David Tseng
2014/09/24 16:24:28
Done.
|
| RewriteExtendedKeys(key_event, &state); |
| RewriteFunctionKeys(key_event, &state); |
| } |
| + } |
| if ((key_event.flags() == state.flags) && |
| (key_event.key_code() == state.key_code) && |
| #if defined(USE_X11) |