[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