[gtk+/gtk-3-18] Translate GDK_KEY_KP_Decimal according to locale
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-18] Translate GDK_KEY_KP_Decimal according to locale
- Date: Mon, 9 Nov 2015 13:51:29 +0000 (UTC)
commit bfedc3bafe4538d6c815405d5a9daf1abbf5b74a
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Oct 20 11:06:43 2015 -0400
Translate GDK_KEY_KP_Decimal according to locale
It makes sense that you should be able to type numbers that are
correctly formatted and parsable according to the current locale,
using just the keypad. This patch makes it so by translating
GDK_KEY_KP_Decimal to the decimal separator for the current locale,
instead of hardcoding a '.'.
https://bugzilla.gnome.org/show_bug.cgi?id=756751
gdk/gdkkeyuni.c | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/gdk/gdkkeyuni.c b/gdk/gdkkeyuni.c
index d770737..ea28010 100644
--- a/gdk/gdkkeyuni.c
+++ b/gdk/gdkkeyuni.c
@@ -27,6 +27,7 @@
#include "gdkkeys.h"
#include "gdktypes.h"
+#include <locale.h>
/* Thanks to Markus G. Kuhn <mkuhn acm org> for the ksysym<->Unicode
* mapping functions, from the xterm sources.
@@ -872,6 +873,23 @@ static const struct {
#endif
};
+static gunichar
+get_decimal_point (void)
+{
+ struct lconv *locale_data;
+ const gchar *decimal_point;
+ gunichar ret;
+
+ locale_data = localeconv ();
+ decimal_point = locale_data->decimal_point;
+
+ ret = g_utf8_get_char_validated (decimal_point, -1);
+ if (ret != (gunichar)-2 && ret != (gunichar)-1)
+ return ret;
+
+ return (gunichar) '.';
+}
+
/**
* gdk_keyval_to_unicode:
* @keyval: a GDK key symbol
@@ -899,6 +917,9 @@ gdk_keyval_to_unicode (guint keyval)
if ((keyval & 0xff000000) == 0x01000000)
return keyval & 0x00ffffff;
+ if (keyval == 0xffae)
+ return (guint32) get_decimal_point ();
+
/* binary search in table */
while (max >= min) {
mid = (min + max) / 2;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]