From 68eabf07e0ee81492b681e5eedd6f0c61354ab0c Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Wed, 29 Jan 2003 22:24:36 +0000 Subject: [PATCH] Make the translation of GDK_KP_Decimal dependent on LC_NUMERIC. (#101225) Wed Jan 29 17:02:41 2003 Owen Taylor * gdk/gdkkeyuni.c (get_decimal_char): Make the translation of GDK_KP_Decimal dependent on LC_NUMERIC. (#101225) --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-4 | 6 ++++++ ChangeLog.pre-2-6 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ gdk/gdkkeyuni.c | 27 +++++++++++++++++++++++++++ 6 files changed, 57 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6f9c52b25e..768e425423 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Jan 29 17:02:41 2003 Owen Taylor + + * gdk/gdkkeyuni.c (get_decimal_char): Make the + translation of GDK_KP_Decimal dependent on LC_NUMERIC. + (#101225) + Wed Jan 29 15:43:56 2003 Owen Taylor * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 6f9c52b25e..768e425423 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Wed Jan 29 17:02:41 2003 Owen Taylor + + * gdk/gdkkeyuni.c (get_decimal_char): Make the + translation of GDK_KP_Decimal dependent on LC_NUMERIC. + (#101225) + Wed Jan 29 15:43:56 2003 Owen Taylor * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 6f9c52b25e..768e425423 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Wed Jan 29 17:02:41 2003 Owen Taylor + + * gdk/gdkkeyuni.c (get_decimal_char): Make the + translation of GDK_KP_Decimal dependent on LC_NUMERIC. + (#101225) + Wed Jan 29 15:43:56 2003 Owen Taylor * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 6f9c52b25e..768e425423 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Wed Jan 29 17:02:41 2003 Owen Taylor + + * gdk/gdkkeyuni.c (get_decimal_char): Make the + translation of GDK_KP_Decimal dependent on LC_NUMERIC. + (#101225) + Wed Jan 29 15:43:56 2003 Owen Taylor * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 6f9c52b25e..768e425423 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Wed Jan 29 17:02:41 2003 Owen Taylor + + * gdk/gdkkeyuni.c (get_decimal_char): Make the + translation of GDK_KP_Decimal dependent on LC_NUMERIC. + (#101225) + Wed Jan 29 15:43:56 2003 Owen Taylor * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): 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 + #include "gdk.h" +#include "gdkkeysyms.h" /* Thanks to Markus G. Kuhn 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;