#if defined(OS_WIN)
#include <windows.h>
-#elif defined(TOOLKIT_GTK)
-#include <gdk/gdk.h>
#endif
#include "base/i18n/rtl.h"
#include "base/logging.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
-#include "grit/ui_strings.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/strings/grit/ui_strings.h"
#if !defined(OS_WIN) && (defined(USE_AURA) || defined(OS_MACOSX))
#include "ui/events/keycodes/keyboard_code_conversion.h"
Accelerator::Accelerator()
: key_code_(ui::VKEY_UNKNOWN),
type_(ui::ET_KEY_PRESSED),
- modifiers_(0) {
+ modifiers_(0),
+ is_repeat_(false) {
}
Accelerator::Accelerator(KeyboardCode keycode, int modifiers)
: key_code_(keycode),
type_(ui::ET_KEY_PRESSED),
- modifiers_(modifiers) {
+ modifiers_(modifiers),
+ is_repeat_(false) {
}
Accelerator::Accelerator(const Accelerator& accelerator) {
key_code_ = accelerator.key_code_;
type_ = accelerator.type_;
modifiers_ = accelerator.modifiers_;
+ is_repeat_ = accelerator.is_repeat_;
if (accelerator.platform_accelerator_.get())
platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy();
}
key_code_ = accelerator.key_code_;
type_ = accelerator.type_;
modifiers_ = accelerator.modifiers_;
+ is_repeat_ = accelerator.is_repeat_;
if (accelerator.platform_accelerator_.get())
platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy();
else
}
bool Accelerator::operator ==(const Accelerator& rhs) const {
- if (platform_accelerator_.get() != rhs.platform_accelerator_.get() &&
- ((!platform_accelerator_.get() || !rhs.platform_accelerator_.get()) ||
- !platform_accelerator_->Equals(*rhs.platform_accelerator_))) {
- return false;
- }
+ if ((key_code_ == rhs.key_code_) && (type_ == rhs.type_) &&
+ (modifiers_ == rhs.modifiers_))
+ return true;
+
+ bool platform_equal =
+ platform_accelerator_.get() && rhs.platform_accelerator_.get() &&
+ platform_accelerator_.get() == rhs.platform_accelerator_.get();
- return (key_code_ == rhs.key_code_) && (type_ == rhs.type_) &&
- (modifiers_ == rhs.modifiers_);
+ return platform_equal;
}
bool Accelerator::operator !=(const Accelerator& rhs) const {
return (modifiers_ & EF_COMMAND_DOWN) != 0;
}
+bool Accelerator::IsRepeat() const {
+ return is_repeat_;
+}
+
base::string16 Accelerator::GetShortcutText() const {
int string_id = 0;
switch (key_code_) {
// default zoom level), we leave VK_[0-9] alone without translation.
wchar_t key;
if (key_code_ >= '0' && key_code_ <= '9')
- key = key_code_;
+ key = static_cast<wchar_t>(key_code_);
else
key = LOWORD(::MapVirtualKeyW(key_code_, MAPVK_VK_TO_CHAR));
shortcut += key;
if (c != 0)
shortcut +=
static_cast<base::string16::value_type>(base::ToUpperASCII(c));
-#elif defined(TOOLKIT_GTK)
- const gchar* name = NULL;
- switch (key_code_) {
- case ui::VKEY_OEM_2:
- name = static_cast<const gchar*>("/");
- break;
- default:
- name = gdk_keyval_name(gdk_keyval_to_lower(key_code_));
- break;
- }
- if (name) {
- if (name[0] != 0 && name[1] == 0)
- shortcut +=
- static_cast<base::string16::value_type>(g_ascii_toupper(name[0]));
- else
- shortcut += base::UTF8ToUTF16(name);
- }
#endif
} else {
shortcut = l10n_util::GetStringUTF16(string_id);