gnome-initial-setup/0002-keyboard-Don-t-require-localed-for-existing-user-mod.patch
2023-09-10 20:20:10 -04:00

92 lines
3.4 KiB
Diff

From 1a15a39b5cc4cfa14f3b953c19b03901c923cbc1 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Sat, 9 Sep 2023 17:07:46 -0400
Subject: [PATCH 2/9] keyboard: Don't require localed for existing user mode
If we're in existing user mode, the user may not have
permission to set the system keymap.
This commit makes sure that lack of permission doesn't
prevent the keyboard page from completing.
---
gnome-initial-setup/pages/keyboard/gis-keyboard-page.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
index fa41230f..da384495 100644
--- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
@@ -388,62 +388,67 @@ preselect_input_source (GisKeyboardPage *self)
* - If we got nothing from gnome-desktop and there's no system-wide
* keyboard layout set, we don't preselect anything.
*
* See:
* - https://bugzilla.gnome.org/show_bug.cgi?id=776189
* - https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/issues/104
*/
language = cc_common_language_get_current_language ();
desktop_got_something = gnome_get_input_source_from_locale (language, &type, &id);
desktop_got_input_method = (desktop_got_something && g_strcmp0 (type, "xkb") != 0);
if (desktop_got_something && (desktop_got_input_method || !priv->system_sources)) {
cc_input_chooser_set_input (CC_INPUT_CHOOSER (priv->input_chooser),
id, type);
} else if (priv->system_sources) {
cc_input_chooser_set_input (CC_INPUT_CHOOSER (priv->input_chooser),
(const gchar *) priv->system_sources->data,
"xkb");
}
g_free (language);
}
static void
update_page_complete (GisKeyboardPage *self)
{
GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
gboolean complete;
- complete = (priv->localed != NULL &&
- cc_input_chooser_get_input_id (CC_INPUT_CHOOSER (priv->input_chooser)) != NULL);
+ if (gis_driver_get_mode (GIS_PAGE (self)->driver) == GIS_DRIVER_MODE_NEW_USER) {
+ complete = (priv->localed != NULL &&
+ cc_input_chooser_get_input_id (CC_INPUT_CHOOSER (priv->input_chooser)) != NULL);
+ } else {
+ complete = cc_input_chooser_get_input_id (CC_INPUT_CHOOSER (priv->input_chooser)) != NULL;
+ }
+
gis_page_set_complete (GIS_PAGE (self), complete);
}
static void
localed_proxy_ready (GObject *source,
GAsyncResult *res,
gpointer data)
{
GisKeyboardPage *self = data;
GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
GDBusProxy *proxy;
GError *error = NULL;
proxy = g_dbus_proxy_new_finish (res, &error);
if (!proxy) {
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
g_warning ("Failed to contact localed: %s", error->message);
g_error_free (error);
return;
}
priv->localed = proxy;
preselect_input_source (self);
update_page_complete (self);
}
static void
input_confirmed (CcInputChooser *chooser,
--
2.41.0