Add support to serialize special unicode chars in ui::Accelerator

This commit is contained in:
David Capello 2014-11-06 09:37:07 -03:00
parent 6d255dd3ab
commit ba73bcafed

View File

@ -76,20 +76,27 @@ Accelerator::Accelerator(const std::string& str)
// Scancode
// Word with one character
else if (tok.size() == 1) {
if ((tok[0] >= 'a') && (tok[0] <= 'z')) {
m_unicodeChar = tok[0];
}
else {
m_unicodeChar = tok[0];
else if (base::utf8_length(tok) == 1) {
std::wstring wstr = base::from_utf8(tok);
if (wstr.size() != 1) {
ASSERT(false && "Something wrong converting utf-8 to wchar string");
continue;
}
if ((tok[0] >= 'a') && (tok[0] <= 'z'))
m_scancode = (KeyScancode)((int)kKeyA + std::tolower(tok[0]) - 'a');
else if ((tok[0] >= '0') && (tok[0] <= '9'))
m_scancode = (KeyScancode)((int)kKey0 + tok[0] - '0');
wchar_t wchr = wstr[0];
wchr = tolower(wchr);
if ((wchr >= 'a') && (wchr <= 'z')) {
m_unicodeChar = wchr;
m_scancode = (KeyScancode)((int)kKeyA + wchr - 'a');
}
else {
switch (tok[0]) {
m_unicodeChar = wchr;
if ((wchr >= '0') && (wchr <= '9'))
m_scancode = (KeyScancode)((int)kKey0 + wchr - '0');
else {
switch (wchr) {
case '~': m_scancode = kKeyTilde; break;
case '-': m_scancode = kKeyMinus; break;
case '=': m_scancode = kKeyEquals; break;
@ -105,6 +112,7 @@ Accelerator::Accelerator(const std::string& str)
}
}
}
}
// Other ones
else {
// F1, F2, ..., F11, F12