From 3f6b2d9b9f7e07ecc6123d2d461cf8bea0ba2777 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Mon, 15 Mar 2021 15:32:47 -0700 Subject: [PATCH] spellcheck: deduplicate languages from checker We don't want the same language loaded twice which could occur if we had something like "en_US" and "en_US.UTF-8" which is turned into "en_US" by enchant internally. --- gtk/gtkspellcheck.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/gtk/gtkspellcheck.c b/gtk/gtkspellcheck.c index bfed875074..34de75b89f 100644 --- a/gtk/gtkspellcheck.c +++ b/gtk/gtkspellcheck.c @@ -146,6 +146,26 @@ gtk_spell_checker_get_languages (GtkSpellChecker *self) return (char **)(gpointer)g_array_free (ar, FALSE); } +static gboolean +gtk_spell_checker_contains_language (GtkSpellChecker *self, + GtkSpellLanguage *language) +{ + g_assert (GTK_IS_SPELL_CHECKER (self)); + g_assert (language != NULL); + g_assert (language->code != NULL); + g_assert (language->provider != NULL); + + for (guint i = 0; i < self->languages->len; i++) + { + GtkSpellLanguage *element = g_ptr_array_index (self->languages, i); + + if (g_strcmp0 (language->code, element->code) == 0) + return TRUE; + } + + return FALSE; +} + static void gtk_spell_checker_set_languages (GtkSpellChecker *self, const char * const *languages) @@ -165,7 +185,9 @@ gtk_spell_checker_set_languages (GtkSpellChecker *self, if (language == NULL) continue; - g_ptr_array_add (self->languages, language); + if (!gtk_spell_checker_contains_language (self, language)) + g_ptr_array_add (self->languages, language); + break; } }