| Index: chrome/browser/extensions/global_shortcut_listener_x11.cc
|
| diff --git a/chrome/browser/extensions/global_shortcut_listener_x11.cc b/chrome/browser/extensions/global_shortcut_listener_x11.cc
|
| index b0b73ccce57930fc47a34616e576bac94813e860..97bc382ef839ec74e2e92a1c6df6d42106bcbebb 100644
|
| --- a/chrome/browser/extensions/global_shortcut_listener_x11.cc
|
| +++ b/chrome/browser/extensions/global_shortcut_listener_x11.cc
|
| @@ -107,18 +107,13 @@ bool GlobalShortcutListenerX11::Dispatch(const base::NativeEvent& event) {
|
| return true;
|
| }
|
|
|
| -void GlobalShortcutListenerX11::RegisterAccelerator(
|
| - const ui::Accelerator& accelerator,
|
| - GlobalShortcutListener::Observer* observer) {
|
| - if (registered_hot_keys_.find(accelerator) != registered_hot_keys_.end()) {
|
| - // The shortcut has already been registered. Some shortcuts, such as
|
| - // MediaKeys can have multiple targets, all keyed off of the same
|
| - // accelerator.
|
| - return;
|
| - }
|
| +bool GlobalShortcutListenerX11::RegisterAcceleratorImpl(
|
| + const ui::Accelerator& accelerator) {
|
| + DCHECK(registered_hot_keys_.find(accelerator) == registered_hot_keys_.end());
|
|
|
| int modifiers = GetNativeModifiers(accelerator);
|
| - KeyCode keycode = XKeysymToKeycode(x_display_, accelerator.key_code());
|
| + KeyCode keycode = XKeysymToKeycode(x_display_,
|
| + XKeysymForWindowsKeyCode(accelerator.key_code(), false));
|
| base::X11ErrorTracker err_tracker;
|
|
|
| // Because XGrabKey only works on the exact modifiers mask, we should register
|
| @@ -138,27 +133,27 @@ void GlobalShortcutListenerX11::RegisterAccelerator(
|
| XUngrabKey(x_display_, keycode, modifiers | kModifiersMasks[i],
|
| x_root_window_);
|
| }
|
| - } else {
|
| - registered_hot_keys_.insert(accelerator);
|
| - GlobalShortcutListener::RegisterAccelerator(accelerator, observer);
|
| +
|
| + return false;
|
| }
|
| +
|
| + registered_hot_keys_.insert(accelerator);
|
| + return true;
|
| }
|
|
|
| -void GlobalShortcutListenerX11::UnregisterAccelerator(
|
| - const ui::Accelerator& accelerator,
|
| - GlobalShortcutListener::Observer* observer) {
|
| - if (registered_hot_keys_.find(accelerator) == registered_hot_keys_.end())
|
| - return;
|
| +void GlobalShortcutListenerX11::UnregisterAcceleratorImpl(
|
| + const ui::Accelerator& accelerator) {
|
| + DCHECK(registered_hot_keys_.find(accelerator) != registered_hot_keys_.end());
|
|
|
| int modifiers = GetNativeModifiers(accelerator);
|
| - KeyCode keycode = XKeysymToKeycode(x_display_, accelerator.key_code());
|
| + KeyCode keycode = XKeysymToKeycode(x_display_,
|
| + XKeysymForWindowsKeyCode(accelerator.key_code(), false));
|
|
|
| for (size_t i = 0; i < arraysize(kModifiersMasks); ++i) {
|
| XUngrabKey(x_display_, keycode, modifiers | kModifiersMasks[i],
|
| x_root_window_);
|
| }
|
| registered_hot_keys_.erase(accelerator);
|
| - GlobalShortcutListener::UnregisterAccelerator(accelerator, observer);
|
| }
|
|
|
| #if defined(TOOLKIT_GTK)
|
|
|