gnome-initial-setup/0002-keyboard-Don-t-require-localed-for-existing-user-mod.patch

92 lines
3.4 KiB
Diff
Raw Normal View History

2023-09-11 00:19:22 +00:00
From 1a15a39b5cc4cfa14f3b953c19b03901c923cbc1 Mon Sep 17 00:00:00 2001
2023-09-09 22:51:17 +00:00
From: Ray Strode <rstrode@redhat.com>
Date: Sat, 9 Sep 2023 17:07:46 -0400
2023-09-11 00:19:22 +00:00
Subject: [PATCH 2/9] keyboard: Don't require localed for existing user mode
2023-09-09 22:51:17 +00:00
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
2023-09-11 00:19:22 +00:00
index fa41230f..da384495 100644
2023-09-09 22:51:17 +00:00
--- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
2023-09-11 00:19:22 +00:00
@@ -388,62 +388,67 @@ preselect_input_source (GisKeyboardPage *self)
2023-09-09 22:51:17 +00:00
* - 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);
2023-09-11 00:19:22 +00:00
+ if (gis_driver_get_mode (GIS_PAGE (self)->driver) == GIS_DRIVER_MODE_NEW_USER) {
2023-09-09 22:51:17 +00:00
+ 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