96 lines
3.1 KiB
Diff
96 lines
3.1 KiB
Diff
From 29fbe5dda08df05b193c0a064a58e5f0d9a66a4a Mon Sep 17 00:00:00 2001
|
|
From: Ray Strode <rstrode@redhat.com>
|
|
Date: Sat, 19 Aug 2023 15:31:03 -0400
|
|
Subject: [PATCH 07/10] keyboard: Don't add default input sources if input
|
|
sources already set
|
|
|
|
If the keyboard page gets skipped, it adds default input sources derived
|
|
from the users locale.
|
|
|
|
That is all fine and good, but may stomp on existiing site or distro configuration.
|
|
|
|
This commit checks for that kind of thing first, and skips adding the
|
|
default in that case.
|
|
---
|
|
gnome-initial-setup/pages/keyboard/gis-keyboard-page.c | 10 ++++++++++
|
|
1 file changed, 10 insertions(+)
|
|
|
|
diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
|
|
index 44d48fd0..a3be7287 100644
|
|
--- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
|
|
+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
|
|
@@ -222,60 +222,70 @@ update_input (GisKeyboardPage *self)
|
|
const gchar *id;
|
|
|
|
type = cc_input_chooser_get_input_type (CC_INPUT_CHOOSER (priv->input_chooser));
|
|
id = cc_input_chooser_get_input_id (CC_INPUT_CHOOSER (priv->input_chooser));
|
|
|
|
set_input_settings (self, type, id);
|
|
|
|
if (gis_driver_get_mode (GIS_PAGE (self)->driver) & GIS_DRIVER_MODE_SYSTEM) {
|
|
if (g_permission_get_allowed (priv->permission)) {
|
|
set_localed_input (self);
|
|
} else if (g_permission_get_can_acquire (priv->permission)) {
|
|
g_permission_acquire_async (priv->permission,
|
|
NULL,
|
|
change_locale_permission_acquired,
|
|
self);
|
|
}
|
|
}
|
|
}
|
|
|
|
static gboolean
|
|
gis_keyboard_page_apply (GisPage *page,
|
|
GCancellable *cancellable)
|
|
{
|
|
update_input (GIS_KEYBOARD_PAGE (page));
|
|
return FALSE;
|
|
}
|
|
|
|
static void
|
|
add_default_input_sources (GisKeyboardPage *self)
|
|
{
|
|
+ GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
|
|
+ g_autoptr(GVariant) default_value = NULL;
|
|
+ g_autoptr(GVariant) value = NULL;
|
|
+
|
|
+ default_value = g_settings_get_default_value (priv->input_settings, KEY_INPUT_SOURCES);
|
|
+ value = g_settings_get_value (priv->input_settings, KEY_INPUT_SOURCES);
|
|
+
|
|
+ if (!g_variant_equal (default_value, value))
|
|
+ return;
|
|
+
|
|
set_input_settings (self, NULL, NULL);
|
|
}
|
|
|
|
static void
|
|
gis_keyboard_page_skip (GisPage *page)
|
|
{
|
|
GisKeyboardPage *self = GIS_KEYBOARD_PAGE (page);
|
|
GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
|
|
|
|
priv->should_skip = TRUE;
|
|
|
|
if (priv->default_input_source_ids != NULL)
|
|
add_default_input_sources (self);
|
|
}
|
|
|
|
static void
|
|
preselect_input_source (GisKeyboardPage *self)
|
|
{
|
|
GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
|
|
|
|
cc_input_chooser_set_input (CC_INPUT_CHOOSER (priv->input_chooser),
|
|
priv->default_input_source_ids[0],
|
|
priv->default_input_source_types[0]);
|
|
}
|
|
|
|
static void
|
|
update_page_complete (GisKeyboardPage *self)
|
|
{
|
|
GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
|
|
gboolean complete;
|
|
--
|
|
2.41.0.rc2
|
|
|