diff options
author | Ben Woods <woodsb02@FreeBSD.org> | 2017-07-24 12:47:45 +0000 |
---|---|---|
committer | Ben Woods <woodsb02@FreeBSD.org> | 2017-07-24 12:47:45 +0000 |
commit | 2300533f5500ce753463775974ff535f08a58d50 (patch) | |
tree | 0dd1a4ea55f9ebe83df9b813f5324a6d936defda /x11/lightdm | |
parent | 9d5d212aa13bfe069ff61b0fe9e0aac3dd1da34a (diff) | |
download | ports-2300533f5500ce753463775974ff535f08a58d50.tar.gz ports-2300533f5500ce753463775974ff535f08a58d50.zip |
x11/lightdm: Fix locale selection
- Allow locale selection on login screen. First, lightdm must be patched
to correctly detect utf8 locales, which have a UTF-8 suffix on FreeBSD
instead of utf8 like on Linux systems. Secondly, we have to use locale
codes in the language menuitem as FreeBSD doesn't have support for
locale naming (missing _NL_IDENTIFICATION_LANGUAGE implementation).
- Use @sample for lightdm-gtk-greeter config file to prevent it from
being overwritten when the package is reinstalled / upgraded.
PR: 220614
Submitted by: pawel
MFH: 2017Q3
Notes
Notes:
svn path=/head/; revision=446523
Diffstat (limited to 'x11/lightdm')
-rw-r--r-- | x11/lightdm/Makefile | 2 | ||||
-rw-r--r-- | x11/lightdm/files/patch-liblightdm-gobject_language.c | 50 |
2 files changed, 48 insertions, 4 deletions
diff --git a/x11/lightdm/Makefile b/x11/lightdm/Makefile index 1095b20c6da1..7afa4bf9a1f3 100644 --- a/x11/lightdm/Makefile +++ b/x11/lightdm/Makefile @@ -3,7 +3,7 @@ PORTNAME= lightdm PORTVERSION= 1.20.0 -PORTREVISION= 6 +PORTREVISION= 7 CATEGORIES= x11 MASTER_SITES= https://launchpad.net/${PORTNAME}/${PORTVERSION:R}/${PORTVERSION}/+download/ diff --git a/x11/lightdm/files/patch-liblightdm-gobject_language.c b/x11/lightdm/files/patch-liblightdm-gobject_language.c index b64d8642594d..5b0bf032c4c6 100644 --- a/x11/lightdm/files/patch-liblightdm-gobject_language.c +++ b/x11/lightdm/files/patch-liblightdm-gobject_language.c @@ -1,8 +1,52 @@ https://bugs.launchpad.net/lightdm/+bug/790186 ---- liblightdm-gobject/language.c.orig 2016-12-09 01:04:48 UTC +--- liblightdm-gobject/language.c.orig 2016-09-30 03:23:52 UTC +++ liblightdm-gobject/language.c -@@ -248,10 +248,16 @@ lightdm_language_get_name (LightDMLangua +@@ -36,6 +36,12 @@ G_DEFINE_TYPE (LightDMLanguage, lightdm_language, G_TY + static gboolean have_languages = FALSE; + static GList *languages = NULL; + ++static gboolean ++is_utf8 (const gchar *code) ++{ ++ return g_strrstr (code, ".utf8") || g_strrstr (code, ".UTF-8"); ++} ++ + static void + update_languages (void) + { +@@ -72,7 +78,7 @@ update_languages (void) + continue; + + /* Ignore the non-interesting languages */ +- if (strcmp (command, "locale -a") == 0 && !g_strrstr (code, ".utf8")) ++ if (strcmp (command, "locale -a") == 0 && !is_utf8 (code)) + continue; + + language = g_object_new (LIGHTDM_TYPE_LANGUAGE, "code", code, NULL); +@@ -88,12 +94,6 @@ update_languages (void) + have_languages = TRUE; + } + +-static gboolean +-is_utf8 (const gchar *code) +-{ +- return g_strrstr (code, ".utf8") || g_strrstr (code, ".UTF-8"); +-} +- + /* Get a valid locale name that can be passed to setlocale(), so we always can use nl_langinfo() to get language and country names. */ + static gchar * + get_locale_name (const gchar *code) +@@ -133,7 +133,7 @@ get_locale_name (const gchar *code) + for (i = 0; avail_locales[i]; i++) + { + gchar *loc = avail_locales[i]; +- if (!g_strrstr (loc, ".utf8")) ++ if (!is_utf8 (loc)) + continue; + if (g_str_has_prefix (loc, language)) + { +@@ -227,10 +227,16 @@ lightdm_language_get_name (LightDMLanguage *language) if (locale) { gchar *current = setlocale (LC_ALL, NULL); @@ -19,7 +63,7 @@ https://bugs.launchpad.net/lightdm/+bug/790186 if (language_en && strlen (language_en) > 0) priv->name = g_strdup (dgettext ("iso_639_3", language_en)); -@@ -291,10 +297,16 @@ lightdm_language_get_territory (LightDML +@@ -270,10 +276,16 @@ lightdm_language_get_territory (LightDMLanguage *langu if (locale) { gchar *current = setlocale (LC_ALL, NULL); |