diff options
author | Owen Taylor <otaylor@redhat.com> | 2003-01-29 22:24:36 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2003-01-29 22:24:36 +0000 |
commit | 68eabf07e0ee81492b681e5eedd6f0c61354ab0c (patch) | |
tree | 35e7a000e00a8dd721b781ac2866aa01173ec877 /gdk/gdkkeyuni.c | |
parent | f9a399961eea1e8385c068f52256d84fa35cfd3c (diff) | |
download | gtk+-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.c | 27 |
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; |