summaryrefslogtreecommitdiff
path: root/gdk/gdkkeyuni.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2003-01-29 22:24:36 +0000
committerOwen Taylor <otaylor@src.gnome.org>2003-01-29 22:24:36 +0000
commit68eabf07e0ee81492b681e5eedd6f0c61354ab0c (patch)
tree35e7a000e00a8dd721b781ac2866aa01173ec877 /gdk/gdkkeyuni.c
parentf9a399961eea1e8385c068f52256d84fa35cfd3c (diff)
downloadgtk+-68eabf07e0ee81492b681e5eedd6f0c61354ab0c.tar.gz
Make the translation of GDK_KP_Decimal dependent on LC_NUMERIC. (#101225)
Wed Jan 29 17:02:41 2003 Owen Taylor <otaylor@redhat.com> * gdk/gdkkeyuni.c (get_decimal_char): Make the translation of GDK_KP_Decimal dependent on LC_NUMERIC. (#101225)
Diffstat (limited to 'gdk/gdkkeyuni.c')
-rw-r--r--gdk/gdkkeyuni.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/gdk/gdkkeyuni.c b/gdk/gdkkeyuni.c
index f139be8f3f..fed2d41ce2 100644
--- a/gdk/gdkkeyuni.c
+++ b/gdk/gdkkeyuni.c
@@ -1,4 +1,7 @@
+#include <locale.h>
+
#include "gdk.h"
+#include "gdkkeysyms.h"
/* Thanks to Markus G. Kuhn <mkuhn@acm.org> for the ksysym<->Unicode
* mapping functions, from the xterm sources.
@@ -823,6 +826,25 @@ static struct {
/* End numeric keypad */
};
+static gunichar
+get_decimal_char (void)
+{
+ struct lconv *locale_data;
+ gunichar result = '.';
+ gchar *utf8;
+
+ locale_data = localeconv ();
+ utf8 = g_locale_to_utf8 (locale_data->decimal_point, -1, NULL, NULL, NULL);
+ if (utf8)
+ {
+ if (g_utf8_strlen (utf8, -1) == 1)
+ result = g_utf8_get_char (utf8);
+ g_free (utf8);
+ }
+
+ return result;
+}
+
/**
* gdk_keyval_to_unicode:
* @keyval: a GDK key symbol
@@ -850,6 +872,11 @@ gdk_keyval_to_unicode (guint keyval)
if ((keyval & 0xff000000) == 0x01000000)
return keyval & 0x00ffffff;
+ /* Translation of KP_Decimal depends on locale.
+ */
+ if (keyval == GDK_KP_Decimal)
+ return get_decimal_char ();
+
/* binary search in table */
while (max >= min) {
mid = (min + max) / 2;