import gnome-settings-daemon-3.28.1-2.el8
This commit is contained in:
commit
5dd1d7f399
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
SOURCES/gnome-settings-daemon-3.28.1.tar.xz
|
1
.gnome-settings-daemon.metadata
Normal file
1
.gnome-settings-daemon.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
a9799a2a036b87e13fe814351e392987c6f95dd2 SOURCES/gnome-settings-daemon-3.28.1.tar.xz
|
183
SOURCES/0001-keyboard-Enable-ibus-for-OSK-purposes.patch
Normal file
183
SOURCES/0001-keyboard-Enable-ibus-for-OSK-purposes.patch
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
From b7e1d695935ffafdb838b61afa7041c54b3f92bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Carlos Garnacho <carlosg@gnome.org>
|
||||||
|
Date: Tue, 25 Sep 2018 20:19:39 +0200
|
||||||
|
Subject: [PATCH] keyboard: Enable ibus for OSK purposes
|
||||||
|
|
||||||
|
As gnome-shell relies on IBus for focus tracking, enable this IM whenever
|
||||||
|
the conditions for OSK popping up might arise.
|
||||||
|
|
||||||
|
Closes: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/issues/95
|
||||||
|
---
|
||||||
|
plugins/keyboard/gsd-keyboard-manager.c | 75 +++++++++++++++++++++----
|
||||||
|
1 file changed, 65 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/plugins/keyboard/gsd-keyboard-manager.c b/plugins/keyboard/gsd-keyboard-manager.c
|
||||||
|
index ea67dda1..31bfade7 100644
|
||||||
|
--- a/plugins/keyboard/gsd-keyboard-manager.c
|
||||||
|
+++ b/plugins/keyboard/gsd-keyboard-manager.c
|
||||||
|
@@ -78,11 +78,15 @@
|
||||||
|
|
||||||
|
#define DEFAULT_LAYOUT "us"
|
||||||
|
|
||||||
|
+#define GNOME_A11Y_APPLICATIONS_INTERFACE_DIR "org.gnome.desktop.a11y.applications"
|
||||||
|
+#define KEY_OSK_ENABLED "screen-keyboard-enabled"
|
||||||
|
+
|
||||||
|
struct GsdKeyboardManagerPrivate
|
||||||
|
{
|
||||||
|
guint start_idle_id;
|
||||||
|
GSettings *settings;
|
||||||
|
GSettings *input_sources_settings;
|
||||||
|
+ GSettings *a11y_settings;
|
||||||
|
GDBusProxy *localed;
|
||||||
|
GCancellable *cancellable;
|
||||||
|
|
||||||
|
@@ -90,12 +94,15 @@ struct GsdKeyboardManagerPrivate
|
||||||
|
GsdNumLockState old_state;
|
||||||
|
GdkDeviceManager *device_manager;
|
||||||
|
guint device_added_id;
|
||||||
|
+ guint device_removed_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void gsd_keyboard_manager_class_init (GsdKeyboardManagerClass *klass);
|
||||||
|
static void gsd_keyboard_manager_init (GsdKeyboardManager *keyboard_manager);
|
||||||
|
static void gsd_keyboard_manager_finalize (GObject *object);
|
||||||
|
|
||||||
|
+static void update_gtk_im_module (GsdKeyboardManager *manager);
|
||||||
|
+
|
||||||
|
G_DEFINE_TYPE (GsdKeyboardManager, gsd_keyboard_manager, G_TYPE_OBJECT)
|
||||||
|
|
||||||
|
static gpointer manager_object = NULL;
|
||||||
|
@@ -363,9 +370,23 @@ device_added_cb (GdkDeviceManager *device_manager,
|
||||||
|
if (source == GDK_SOURCE_KEYBOARD) {
|
||||||
|
g_debug ("New keyboard plugged in, applying all settings");
|
||||||
|
apply_numlock (manager);
|
||||||
|
+ } else if (source == GDK_SOURCE_TOUCHSCREEN) {
|
||||||
|
+ update_gtk_im_module (manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+device_removed_cb (GdkDeviceManager *device_manager,
|
||||||
|
+ GdkDevice *device,
|
||||||
|
+ GsdKeyboardManager *manager)
|
||||||
|
+{
|
||||||
|
+ GdkInputSource source;
|
||||||
|
+
|
||||||
|
+ source = gdk_device_get_source (device);
|
||||||
|
+ if (source == GDK_SOURCE_TOUCHSCREEN)
|
||||||
|
+ update_gtk_im_module (manager);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
set_devicepresence_handler (GsdKeyboardManager *manager)
|
||||||
|
{
|
||||||
|
@@ -378,6 +399,8 @@ set_devicepresence_handler (GsdKeyboardManager *manager)
|
||||||
|
|
||||||
|
manager->priv->device_added_id = g_signal_connect (G_OBJECT (device_manager), "device-added",
|
||||||
|
G_CALLBACK (device_added_cb), manager);
|
||||||
|
+ manager->priv->device_removed_id = g_signal_connect (G_OBJECT (device_manager), "device-removed",
|
||||||
|
+ G_CALLBACK (device_removed_cb), manager);
|
||||||
|
manager->priv->device_manager = device_manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -395,14 +418,37 @@ need_ibus (GVariant *sources)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static gboolean
|
||||||
|
+need_osk (GsdKeyboardManager *manager)
|
||||||
|
+{
|
||||||
|
+ GSettings *a11y_settings;
|
||||||
|
+ gboolean has_touchscreen = FALSE;
|
||||||
|
+ GList *devices, *l;
|
||||||
|
+ GdkSeat *seat;
|
||||||
|
+
|
||||||
|
+ if (g_settings_get_boolean (manager->priv->a11y_settings,
|
||||||
|
+ KEY_OSK_ENABLED))
|
||||||
|
+ return TRUE;
|
||||||
|
+
|
||||||
|
+ seat = gdk_display_get_default_seat (gdk_display_get_default ());
|
||||||
|
+ devices = gdk_seat_get_slaves (seat, GDK_SEAT_CAPABILITY_TOUCH);
|
||||||
|
+
|
||||||
|
+ has_touchscreen = devices != NULL;
|
||||||
|
+
|
||||||
|
+ g_list_free (devices);
|
||||||
|
+
|
||||||
|
+ return has_touchscreen;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
-set_gtk_im_module (GSettings *settings,
|
||||||
|
- GVariant *sources)
|
||||||
|
+set_gtk_im_module (GsdKeyboardManager *manager,
|
||||||
|
+ GSettings *settings,
|
||||||
|
+ GVariant *sources)
|
||||||
|
{
|
||||||
|
const gchar *new_module;
|
||||||
|
gchar *current_module;
|
||||||
|
|
||||||
|
- if (need_ibus (sources))
|
||||||
|
+ if (need_ibus (sources) || need_osk (manager))
|
||||||
|
new_module = GTK_IM_MODULE_IBUS;
|
||||||
|
else
|
||||||
|
new_module = GTK_IM_MODULE_SIMPLE;
|
||||||
|
@@ -414,20 +460,20 @@ set_gtk_im_module (GSettings *settings,
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-input_sources_changed (GSettings *settings,
|
||||||
|
- const char *key,
|
||||||
|
- GsdKeyboardManager *manager)
|
||||||
|
+update_gtk_im_module (GsdKeyboardManager *manager)
|
||||||
|
{
|
||||||
|
GSettings *interface_settings;
|
||||||
|
GVariant *sources;
|
||||||
|
+
|
||||||
|
/* Gtk+ uses the IM module advertised in XSETTINGS so, if we
|
||||||
|
* have IBus input sources, we want it to load that
|
||||||
|
* module. Otherwise we can use the default "simple" module
|
||||||
|
* which is builtin gtk+
|
||||||
|
*/
|
||||||
|
- sources = g_settings_get_value (settings, KEY_INPUT_SOURCES);
|
||||||
|
interface_settings = g_settings_new (GNOME_DESKTOP_INTERFACE_DIR);
|
||||||
|
- set_gtk_im_module (interface_settings, sources);
|
||||||
|
+ sources = g_settings_get_value (manager->priv->input_sources_settings,
|
||||||
|
+ KEY_INPUT_SOURCES);
|
||||||
|
+ set_gtk_im_module (manager, interface_settings, sources);
|
||||||
|
g_object_unref (interface_settings);
|
||||||
|
g_variant_unref (sources);
|
||||||
|
}
|
||||||
|
@@ -686,8 +732,15 @@ start_keyboard_idle_cb (GsdKeyboardManager *manager)
|
||||||
|
set_devicepresence_handler (manager);
|
||||||
|
|
||||||
|
manager->priv->input_sources_settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR);
|
||||||
|
- g_signal_connect (manager->priv->input_sources_settings, "changed::"KEY_INPUT_SOURCES,
|
||||||
|
- G_CALLBACK (input_sources_changed), manager);
|
||||||
|
+ g_signal_connect_swapped (manager->priv->input_sources_settings,
|
||||||
|
+ "changed::" KEY_INPUT_SOURCES,
|
||||||
|
+ G_CALLBACK (update_gtk_im_module), manager);
|
||||||
|
+
|
||||||
|
+ manager->priv->a11y_settings = g_settings_new (GNOME_A11Y_APPLICATIONS_INTERFACE_DIR);
|
||||||
|
+ g_signal_connect_swapped (manager->priv->a11y_settings,
|
||||||
|
+ "changed::" KEY_OSK_ENABLED,
|
||||||
|
+ G_CALLBACK (update_gtk_im_module), manager);
|
||||||
|
+ update_gtk_im_module (manager);
|
||||||
|
|
||||||
|
manager->priv->cancellable = g_cancellable_new ();
|
||||||
|
|
||||||
|
@@ -750,10 +803,12 @@ gsd_keyboard_manager_stop (GsdKeyboardManager *manager)
|
||||||
|
|
||||||
|
g_clear_object (&p->settings);
|
||||||
|
g_clear_object (&p->input_sources_settings);
|
||||||
|
+ g_clear_object (&p->a11y_settings);
|
||||||
|
g_clear_object (&p->localed);
|
||||||
|
|
||||||
|
if (p->device_manager != NULL) {
|
||||||
|
g_signal_handler_disconnect (p->device_manager, p->device_added_id);
|
||||||
|
+ g_signal_handler_disconnect (p->device_manager, p->device_removed_id);
|
||||||
|
p->device_manager = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
[org.gnome.settings-daemon.plugins.power]
|
||||||
|
sleep-inactive-ac-timeout=0
|
||||||
|
sleep-inactive-battery-timeout=0
|
1356
SPECS/gnome-settings-daemon.spec
Normal file
1356
SPECS/gnome-settings-daemon.spec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user