Commit bfedc3ba authored by Matthias Clasen's avatar Matthias Clasen

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
parent d49c1cdc
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment