diff options
author | finnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-23 15:29:08 +0000 |
---|---|---|
committer | finnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-23 15:29:08 +0000 |
commit | ea11a0d0876e3b81ca9f78f78f704f931b57088c (patch) | |
tree | 068c0191c537214fff33e4b12198b3cff587a74e | |
parent | 16cddbcefd7a364c416ffd352da8767170f29551 (diff) | |
download | chromium_src-ea11a0d0876e3b81ca9f78f78f704f931b57088c.zip chromium_src-ea11a0d0876e3b81ca9f78f78f704f931b57088c.tar.gz chromium_src-ea11a0d0876e3b81ca9f78f78f704f931b57088c.tar.bz2 |
Add support for Command key for Extension Commands (on Mac).
BUG=27702
TEST=Assign a shortcut Command+something to an Extension Command and make sure it works.
Review URL: https://chromiumcodereview.appspot.com/10827441
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152994 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/resources/extensions/extension_command_list.js | 6 | ||||
-rw-r--r-- | content/browser/renderer_host/native_web_keyboard_event.cc | 4 | ||||
-rw-r--r-- | ui/base/accelerators/accelerator.cc | 13 | ||||
-rw-r--r-- | ui/base/accelerators/accelerator.h | 1 | ||||
-rw-r--r-- | ui/base/strings/ui_strings.grd | 3 |
5 files changed, 22 insertions, 5 deletions
diff --git a/chrome/browser/resources/extensions/extension_command_list.js b/chrome/browser/resources/extensions/extension_command_list.js index 1bafa5e..df1d7cb 100644 --- a/chrome/browser/resources/extensions/extension_command_list.js +++ b/chrome/browser/resources/extensions/extension_command_list.js @@ -33,6 +33,8 @@ cr.define('options', function() { */ function keystrokeToString(event) { var output = ''; + if (cr.isMac && event.metaKey) + output = 'Command+'; if (event.ctrlKey) output = 'Ctrl+'; if (!event.ctrlKey && event.altKey) @@ -232,8 +234,8 @@ cr.define('options', function() { event.preventDefault(); event.stopPropagation(); - if (!event.ctrlKey && !event.altKey) - return; // Ctrl or Alt is a must. + if (!event.ctrlKey && !event.altKey && (!cr.isMac || !event.metaKey)) + return; // Ctrl or Alt is a must (or Cmd on Mac). var keystroke = keystrokeToString(event); event.target.textContent = keystroke; diff --git a/content/browser/renderer_host/native_web_keyboard_event.cc b/content/browser/renderer_host/native_web_keyboard_event.cc index 4257415..2ad30a6 100644 --- a/content/browser/renderer_host/native_web_keyboard_event.cc +++ b/content/browser/renderer_host/native_web_keyboard_event.cc @@ -17,6 +17,10 @@ int GetModifiersFromNativeWebKeyboardEvent( modifiers |= ui::EF_CONTROL_DOWN; if (event.modifiers & NativeWebKeyboardEvent::AltKey) modifiers |= ui::EF_ALT_DOWN; +#if defined(OS_MACOSX) + if (event.modifiers & NativeWebKeyboardEvent::MetaKey) + modifiers |= ui::EF_COMMAND_DOWN; +#endif return modifiers; } diff --git a/ui/base/accelerators/accelerator.cc b/ui/base/accelerators/accelerator.cc index 262c341..1980225 100644 --- a/ui/base/accelerators/accelerator.cc +++ b/ui/base/accelerators/accelerator.cc @@ -71,15 +71,19 @@ bool Accelerator::operator !=(const Accelerator& rhs) const { } bool Accelerator::IsShiftDown() const { - return (modifiers_ & EF_SHIFT_DOWN) == EF_SHIFT_DOWN; + return (modifiers_ & EF_SHIFT_DOWN) != 0; } bool Accelerator::IsCtrlDown() const { - return (modifiers_ & EF_CONTROL_DOWN) == EF_CONTROL_DOWN; + return (modifiers_ & EF_CONTROL_DOWN) != 0; } bool Accelerator::IsAltDown() const { - return (modifiers_ & EF_ALT_DOWN) == EF_ALT_DOWN; + return (modifiers_ & EF_ALT_DOWN) != 0; +} + +bool Accelerator::IsCmdDown() const { + return (modifiers_ & EF_COMMAND_DOWN) != 0; } string16 Accelerator::GetShortcutText() const { @@ -194,6 +198,9 @@ string16 Accelerator::GetShortcutText() const { else if (IsAltDown()) shortcut = l10n_util::GetStringFUTF16(IDS_APP_ALT_MODIFIER, shortcut); + if (IsCmdDown()) + shortcut = l10n_util::GetStringFUTF16(IDS_APP_COMMAND_MODIFIER, shortcut); + // For some reason, menus in Windows ignore standard Unicode directionality // marks (such as LRE, PDF, etc.). On RTL locales, we use RTL menus and // therefore any text we draw for the menu items is drawn in an RTL context. diff --git a/ui/base/accelerators/accelerator.h b/ui/base/accelerators/accelerator.h index 2f6e169..5e1a488 100644 --- a/ui/base/accelerators/accelerator.h +++ b/ui/base/accelerators/accelerator.h @@ -49,6 +49,7 @@ class UI_EXPORT Accelerator { bool IsShiftDown() const; bool IsCtrlDown() const; bool IsAltDown() const; + bool IsCmdDown() const; // Returns a string with the localized shortcut if any. string16 GetShortcutText() const; diff --git a/ui/base/strings/ui_strings.grd b/ui/base/strings/ui_strings.grd index 2dea10b..2c20217 100644 --- a/ui/base/strings/ui_strings.grd +++ b/ui/base/strings/ui_strings.grd @@ -360,6 +360,9 @@ need to be translated for each locale.--> <message name="IDS_APP_SHIFT_MODIFIER" desc="Shift key shortcut modifier"> Shift+<ph name="KEY_COMBO_NAME">$1<ex>C</ex></ph> </message> + <message name="IDS_APP_COMMAND_MODIFIER" desc="Command key shortcut modifier"> + Command+<ph name="KEY_COMBO_NAME">$1<ex>C</ex></ph> + </message> <!-- Byte size units --> <message name="IDS_APP_BYTES" desc="Units tag indicating a quantity of bytes"> |