diff options
author | Will Thompson <wjt@endlessos.org> | 2023-03-03 20:19:15 +0000 |
---|---|---|
committer | Will Thompson <wjt@endlessos.org> | 2023-03-03 20:19:15 +0000 |
commit | 3299831b82c4d55d376366f27c7d38508fbbc2ca (patch) | |
tree | 205a072820a75b502c32189d3903d31171ecc6c9 | |
parent | 6e266142e079ef297024b9ba3438d5ee4df22a1b (diff) | |
parent | 151688f670e8c6f5ecc8a7bac686ddcc815cdf11 (diff) | |
download | gnome-initial-setup-3299831b82c4d55d376366f27c7d38508fbbc2ca.tar.gz |
Merge branch 'wip/wjt/165-show-keyboard-layout-shortlist' into 'master'
keyboard: Show a non-empty list of layouts by default
Closes #165
See merge request GNOME/gnome-initial-setup!188
-rw-r--r-- | gnome-initial-setup/pages/keyboard/cc-input-chooser.c | 22 | ||||
-rw-r--r-- | gnome-initial-setup/pages/keyboard/gis-keyboard-page.c | 2 |
2 files changed, 19 insertions, 5 deletions
diff --git a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c index b5dd397..80f36f2 100644 --- a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c +++ b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c @@ -255,6 +255,7 @@ sync_all_checkmarks (CcInputChooser *chooser) { CcInputChooserPrivate *priv; GtkWidget *row; + gboolean invalidate = FALSE; priv = cc_input_chooser_get_instance_private (chooser); row = gtk_widget_get_first_child (priv->input_list); @@ -267,7 +268,7 @@ sync_all_checkmarks (CcInputChooser *chooser) widget = get_input_widget (child); if (widget == NULL) - return; + break; if (priv->id == NULL || priv->type == NULL) should_be_visible = FALSE; @@ -276,13 +277,20 @@ sync_all_checkmarks (CcInputChooser *chooser) g_strcmp0 (widget->type, priv->type) == 0; gtk_widget_set_opacity (widget->checkmark, should_be_visible ? 1.0 : 0.0); - if (widget->is_extra && should_be_visible) + if (widget->is_extra && should_be_visible) { + g_debug ("Marking selected layout %s (%s:%s) as non-extra", + widget->name, widget->type, widget->id); widget->is_extra = FALSE; + invalidate = TRUE; + } row = gtk_widget_get_next_sibling (row); } - gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->input_list)); + 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 GtkWidget * @@ -340,10 +348,18 @@ choose_non_extras (CcInputChooser *chooser) if (widget == NULL) break; + g_debug ("Picking %s (%s:%s) as non-extra", + widget->name, widget->type, widget->id); widget->is_extra = FALSE; row = gtk_widget_get_next_sibling (row); } + + /* Changing is_extra above affects the ordering and the visibility + * of the newly non-extra rows. + */ + gtk_list_box_invalidate_sort (GTK_LIST_BOX (priv->input_list)); + gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->input_list)); } static void diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c index 8899527..71effda 100644 --- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c +++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c @@ -465,8 +465,6 @@ gis_keyboard_page_constructed (GObject *object) GisKeyboardPage *self = GIS_KEYBOARD_PAGE (object); GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self); - g_type_ensure (CC_TYPE_INPUT_CHOOSER); - G_OBJECT_CLASS (gis_keyboard_page_parent_class)->constructed (object); g_signal_connect (priv->input_chooser, "confirm", |