From be66eb8af619e3785a90b83b48c4d187b7eb433c Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sun, 5 Mar 2023 16:16:12 +0000 Subject: keyboard: Update filter and sort when the display name changes The display name in `InputWidget.name` can affect `sort_inputs()` and `input_visible()`, so we should update it when we replace the placeholder display name with the real one, and tell GTK to update its state accordingly. Signed-off-by: Simon McVittie --- gnome-initial-setup/pages/keyboard/cc-input-chooser.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c index d2bd984..6bf39ed 100644 --- a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c +++ b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c @@ -585,6 +585,7 @@ static void update_ibus_active_sources (CcInputChooser *chooser) { CcInputChooserPrivate *priv; + gboolean invalidate = FALSE; IBusEngineDesc *engine_desc; const gchar *type; const gchar *id; @@ -611,9 +612,16 @@ update_ibus_active_sources (CcInputChooser *chooser) if (engine_desc) { name = engine_get_display_name (engine_desc); gtk_label_set_text (GTK_LABEL (row->label), name); - g_free (name); + g_clear_pointer (&row->name, g_free); + row->name = g_steal_pointer (&name); + invalidate = TRUE; } } + + if (invalidate) { + gtk_list_box_invalidate_sort (GTK_LIST_BOX (priv->input_list)); + gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->input_list)); + } } static void -- cgit v1.2.1