diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-10-10 21:54:25 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-10-10 21:54:25 +0000 |
commit | ca9158fa031bf1f498b8eaa9fecd4a04ea368ea6 (patch) | |
tree | baf525dd86fa5c66725d3839c590efb17135b8ad /gdk/x11/gdkim-x11.c | |
parent | 82a3cc699debd3d16e8371d59990d7f4652066ec (diff) | |
download | gtk+-ca9158fa031bf1f498b8eaa9fecd4a04ea368ea6.tar.gz |
Call setlocale (LC_ALL, ""). (#60606)
Wed Oct 10 12:48:38 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkmain.c (gtk_init_check): Call setlocale (LC_ALL, "").
(#60606)
* gtk/gtkmain.c (gtk_disable_setlocale): Add function
to disable calling setlocale (LC_ALL, "").
* gtk/gtkmain.c (gtk_set_locale): Indicate in the
docs that this function is not typically useful.
* gdk/x11/{gdkim-x11.c,gdkmain-x11.c,gdkprivate-x11.h}:
Automatically initialize GDK for the current locale
on gdk_init(). Don't reset locale to C when
XSupportsLocale() fails.
* gdk/linux-fb/gdkim-fb.c (gdk_set_locale): Remove
useless checks for UTF-8 locale breakage that mattered
only for X.
* examples/calendar/calendar.c
tests/{testgtk.c,testtext.c,testcalendar.c}: Remove calls to
gtk_set_locale().
* gtk/gtkiconfactory.c gtk/gtkitemfactory.c:
gdk_pixbuf_new_from_stream => gdk_pixbuf_new_from_inline.
Diffstat (limited to 'gdk/x11/gdkim-x11.c')
-rw-r--r-- | gdk/x11/gdkim-x11.c | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/gdk/x11/gdkim-x11.c b/gdk/x11/gdkim-x11.c index 05fe0764c4..bd118b0aa0 100644 --- a/gdk/x11/gdkim-x11.c +++ b/gdk/x11/gdkim-x11.c @@ -46,47 +46,35 @@ */ static gboolean gdk_use_mb; -/* - *-------------------------------------------------------------- - * gdk_set_locale - * - * Arguments: - * - * Results: - * - * Side effects: - * - *-------------------------------------------------------------- - */ - -gchar* -gdk_set_locale (void) +void +_gdk_x11_initialize_locale (void) { wchar_t result; gchar *current_locale; + static char *last_locale = NULL; gdk_use_mb = FALSE; - if (!setlocale (LC_ALL,"")) - g_warning ("locale not supported by C library"); - + current_locale = setlocale (LC_ALL, NULL); + + if (last_locale && strcmp (last_locale, current_locale) == 0) + return; + + g_free (last_locale); + last_locale = g_strdup (current_locale); + if (!XSupportsLocale ()) - { - g_warning ("locale not supported by Xlib, locale set to C"); - setlocale (LC_ALL, "C"); - } + g_warning ("locale not supported by Xlib"); if (!XSetLocaleModifiers ("")) g_warning ("can not set locale modifiers"); - current_locale = setlocale (LC_ALL, NULL); - if ((strcmp (current_locale, "C")) && (strcmp (current_locale, "POSIX"))) { gdk_use_mb = TRUE; #ifndef X_LOCALE - /* Detect GNU libc, where mb == UTF8. Not useful unless it's + /* Detect ancient GNU libc, where mb == UTF8. Not useful unless it's * really a UTF8 locale. The below still probably will * screw up on Greek, Cyrillic, etc, encoded as UTF8. */ @@ -109,6 +97,17 @@ gdk_set_locale (void) return current_locale; } +gchar* +gdk_set_locale (void) +{ + if (!setlocale (LC_ALL,"")) + g_warning ("locale not supported by C library"); + + _gdk_x11_initialize_locale (); + + return setlocale (LC_ALL, NULL); +} + /* * gdk_wcstombs * |