summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Thompson <wjt@endlessos.org>2023-03-03 20:19:15 +0000
committerWill Thompson <wjt@endlessos.org>2023-03-03 20:19:15 +0000
commit3299831b82c4d55d376366f27c7d38508fbbc2ca (patch)
tree205a072820a75b502c32189d3903d31171ecc6c9
parent6e266142e079ef297024b9ba3438d5ee4df22a1b (diff)
parent151688f670e8c6f5ecc8a7bac686ddcc815cdf11 (diff)
downloadgnome-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.c22
-rw-r--r--gnome-initial-setup/pages/keyboard/gis-keyboard-page.c2
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",