From 357160456356ff748238e18f13ab6a3ee2d279c0 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Fri, 8 Aug 2003 10:10:59 +0000 Subject: =?UTF-8?q?Patch=20from=20Jo=C3=A3o=20to=20use=20symbols=20rather?= =?UTF-8?q?=20than=20literals=20and=20include=20'c'=20in=20the=20character?= =?UTF-8?q?s=20that=20can=20have=20an=20accent.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gtk/ScintillaGTK.cxx | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index b28bb6b38..f5a630be7 100644 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -859,6 +859,14 @@ void ScintillaGTK::NotifyURIDropped(const char *list) { } const char *CharacterSetID(int characterSet); +#define IS_ACC(x) \ + ((x) >= 65103 && (x) <= 65111) +#define IS_CHAR(x) \ + ((x) >= 0 && (x) <= 128) + +#define IS_ACC_OR_CHAR(x) \ + (IS_CHAR(x)) || (IS_ACC(x)) + #define IS_ACC(x) \ ((x) >= 65103 && (x) <= 65111) #define IS_CHAR(x) \ @@ -868,32 +876,32 @@ const char *CharacterSetID(int characterSet); (IS_CHAR(x)) || (IS_ACC(x)) static int MakeAccent(int key, int acc) { - const char *conv[] = { - "aeioun AEIOUN", - "ãeiõuñ~ÃEIÕUÑ", - "áéíóún'ÁÉÍÓÚN", - "àèìòùn`ÀÈÌÒÙN", - "âêîôûn^ÂÊÎÔÛN", - "äëïöün¨ÄËÏÖÜN" + const char *conv[] = { + "aeiounc AEIOUNC", + "ãeiõuñc~ÃEIÕUÑC", + "áéíóúnç'ÁÉÍÓÚNÇ", + "àèìòùnc`ÀÈÌÒÙNC", + "âêîôûnc^ÂÊÎÔÛNC", + "äëïöünc¨ÄËÏÖÜNC" }; int idx; - for (idx = 0; idx < 13; ++idx) { + for (idx = 0; idx < 15; ++idx) { if (char(key) == conv[0][idx]) { break; } } - if (idx == 13) { + if (idx == 15) { return key; } - if (acc == 65107) { // ~ + if (acc == GDK_dead_tilde) { // ~ return int((unsigned char)(conv[1][idx])); - } else if (acc == 65105) { // ' + } else if (acc == GDK_dead_acute) { // ' return int((unsigned char)(conv[2][idx])); - } else if (acc == 65104) { // ` + } else if (acc == GDK_dead_grave) { // ` return int((unsigned char)(conv[3][idx])); - } else if (acc == 65106) { // ^ + } else if (acc == GDK_dead_circumflex) { // ^ return int((unsigned char)(conv[4][idx])); - } else if (acc == 65111) { // " + } else if (acc == GDK_dead_diaeresis) { // " return int((unsigned char)(conv[5][idx])); } return key; @@ -905,7 +913,7 @@ int ScintillaGTK::KeyDefault(int key, int modifiers) { char utfVal[4]="\0\0\0"; wchar_t wcs[2]; if (IS_CHAR(key) && IS_ACC(lastKey)) { - key = MakeAccent(key, lastKey); + lastKey = key = MakeAccent(key, lastKey); } if (IS_ACC_OR_CHAR(key)) { lastKey = key; -- cgit v1.2.3