summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 15:29:08 +0000
committerfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 15:29:08 +0000
commitea11a0d0876e3b81ca9f78f78f704f931b57088c (patch)
tree068c0191c537214fff33e4b12198b3cff587a74e
parent16cddbcefd7a364c416ffd352da8767170f29551 (diff)
downloadchromium_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.js6
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event.cc4
-rw-r--r--ui/base/accelerators/accelerator.cc13
-rw-r--r--ui/base/accelerators/accelerator.h1
-rw-r--r--ui/base/strings/ui_strings.grd3
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">