diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-09-18 15:11:59 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-09-21 23:23:57 -0400 |
commit | c9b8a8c718838c3357e456f9e8b9396efd96e717 (patch) | |
tree | 609e3b4e7a4b079957b2df8701910cf4769f9efd | |
parent | b45052856e406d6526ef4d32f4346e43c50cd58a (diff) | |
download | gnome-initial-setup-c9b8a8c718838c3357e456f9e8b9396efd96e717.tar.gz |
Sort languages case-insensitively
The current case-sensitive sorting is confusing.
https://bugzilla.gnome.org/show_bug.cgi?id=755233
-rw-r--r-- | gnome-initial-setup/pages/language/cc-language-chooser.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gnome-initial-setup/pages/language/cc-language-chooser.c b/gnome-initial-setup/pages/language/cc-language-chooser.c index 222762b..bcc27f3 100644 --- a/gnome-initial-setup/pages/language/cc-language-chooser.c +++ b/gnome-initial-setup/pages/language/cc-language-chooser.c @@ -75,6 +75,7 @@ typedef struct { gchar *locale_name; gchar *locale_current_name; gchar *locale_untranslated_name; + gchar *sort_key; gboolean is_extra; } LanguageWidget; @@ -108,6 +109,7 @@ language_widget_free (gpointer data) g_free (widget->locale_name); g_free (widget->locale_current_name); g_free (widget->locale_untranslated_name); + g_free (widget->sort_key); g_free (widget); } @@ -119,6 +121,7 @@ language_widget_new (const char *locale_id, gchar *locale_name, *locale_current_name, *locale_untranslated_name; gchar *language, *language_name; gchar *country, *country_name; + gchar *sort_key; LanguageWidget *widget = g_new0 (LanguageWidget, 1); if (!gnome_parse_locale (locale_id, &language, &country, NULL, NULL)) @@ -162,6 +165,10 @@ language_widget_new (const char *locale_id, widget->locale_untranslated_name = locale_untranslated_name; widget->is_extra = is_extra; + sort_key = g_utf8_normalize (locale_name, -1, G_NORMALIZE_DEFAULT); + widget->sort_key = g_utf8_casefold (sort_key, -1); + g_free (sort_key); + g_object_set_data_full (G_OBJECT (widget->box), "language-widget", widget, language_widget_free); @@ -354,7 +361,7 @@ sort_languages (GtkListBoxRow *a, if (!la->is_extra && lb->is_extra) return -1; - return strcmp (la->locale_name, lb->locale_name); + return strcmp (la->sort_key, lb->sort_key); } static void |