[aseprite] 36/134: Add support to serialize special unicode chars in ui::Accelerator
Tobias Hansen
thansen at moszumanska.debian.org
Sat Mar 14 17:10:00 UTC 2015
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit ba73bcafed5b22bd414f9ace548fc4b00f5ada30
Author: David Capello <davidcapello at gmail.com>
Date: Thu Nov 6 09:37:07 2014 -0300
Add support to serialize special unicode chars in ui::Accelerator
---
src/ui/accelerator.cpp | 54 +++++++++++++++++++++++++++++---------------------
1 file changed, 31 insertions(+), 23 deletions(-)
diff --git a/src/ui/accelerator.cpp b/src/ui/accelerator.cpp
index b9d5179..d5a9885 100644
--- a/src/ui/accelerator.cpp
+++ b/src/ui/accelerator.cpp
@@ -76,32 +76,40 @@ 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]) {
- case '~': m_scancode = kKeyTilde; break;
- case '-': m_scancode = kKeyMinus; break;
- case '=': m_scancode = kKeyEquals; break;
- case '[': m_scancode = kKeyOpenbrace; break;
- case ']': m_scancode = kKeyClosebrace; break;
- case ';': m_scancode = kKeyColon; break;
- case '\'': m_scancode = kKeyQuote; break;
- case '\\': m_scancode = kKeyBackslash; break;
- case ',': m_scancode = kKeyComma; break;
- case '.': m_scancode = kKeyStop; break;
- case '/': m_scancode = kKeySlash; break;
- case '*': m_scancode = kKeyAsterisk; break;
+ 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;
+ case '[': m_scancode = kKeyOpenbrace; break;
+ case ']': m_scancode = kKeyClosebrace; break;
+ case ';': m_scancode = kKeyColon; break;
+ case '\'': m_scancode = kKeyQuote; break;
+ case '\\': m_scancode = kKeyBackslash; break;
+ case ',': m_scancode = kKeyComma; break;
+ case '.': m_scancode = kKeyStop; break;
+ case '/': m_scancode = kKeySlash; break;
+ case '*': m_scancode = kKeyAsterisk; break;
+ }
}
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list