Marco Trevisan (Treviño) has proposed merging ~3v1n0/ubuntu/+source/gnome-settings-daemon:ubuntu/bionic into ~ubuntu-desktop/ubuntu/+source/gnome-settings-daemon:ubuntu/bionic.
Requested reviews: Ubuntu Desktop (ubuntu-desktop) Related bugs: Bug #1812735 in gnome-shell (Ubuntu): "Andyrock has to update this placeholder bug :)" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812735 For more details, see: https://code.launchpad.net/~3v1n0/ubuntu/+source/gnome-settings-daemon/+git/gnome-settings-daemon/+merge/362049 -- Your team Ubuntu Desktop is requested to review the proposed merge of ~3v1n0/ubuntu/+source/gnome-settings-daemon:ubuntu/bionic into ~ubuntu-desktop/ubuntu/+source/gnome-settings-daemon:ubuntu/bionic.
diff --git a/debian/changelog b/debian/changelog index bb73cc0..f30bf0a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +gnome-settings-daemon (3.28.1-0ubuntu1.2) UNRELEASED; urgency=medium + + * debian/patches/keyboard-Enable-ibus-for-OSK-purposes.patch: + - Enable IBus for OSK (LP: #1812735) + + -- Marco Trevisan (Treviño) <[email protected]> Mon, 21 Jan 2019 20:26:58 +0100 + gnome-settings-daemon (3.28.1-0ubuntu1.1) bionic; urgency=medium * debian/patches/git_binary_encoding.patch: diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000..52f9b83 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,17 @@ +[DEFAULT] +pristine-tar = True +debian-branch = debian/bionic +upstream-branch = upstream/3.28.x +upstream-vcs-tag = %(version)s + +[buildpackage] +sign-tags = True + +[dch] +multimaint-merge = True + +[import-orig] +postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit + +[pq] +patch-numbers = False diff --git a/debian/patches/keyboard-Enable-ibus-for-OSK-purposes.patch b/debian/patches/keyboard-Enable-ibus-for-OSK-purposes.patch new file mode 100644 index 0000000..88f8437 --- /dev/null +++ b/debian/patches/keyboard-Enable-ibus-for-OSK-purposes.patch @@ -0,0 +1,199 @@ +From: Carlos Garnacho <[email protected]> +Date: Tue, 25 Sep 2018 20:19:39 +0200 +Subject: 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 + +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1812735 +Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/issues/95 +Origin: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/b7e1d69593 +--- + plugins/keyboard/gsd-keyboard-manager.c | 82 +++++++++++++++++++++++++++------ + 1 file changed, 69 insertions(+), 13 deletions(-) + +diff --git a/plugins/keyboard/gsd-keyboard-manager.c b/plugins/keyboard/gsd-keyboard-manager.c +index 343b049..480e735 100644 +--- a/plugins/keyboard/gsd-keyboard-manager.c ++++ b/plugins/keyboard/gsd-keyboard-manager.c +@@ -80,11 +80,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; + +@@ -92,12 +96,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; +@@ -417,9 +424,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) + { +@@ -432,6 +453,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; + } + +@@ -449,14 +472,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; +@@ -528,32 +574,33 @@ manager_notify_is_loaded_cb (GObject *object, + } + } + +-static void +-input_sources_changed (GSettings *settings, +- const char *key, +- GsdKeyboardManager *manager) ++update_gtk_im_module (GsdKeyboardManager *manager) + { + GSettings *interface_settings; + GVariant *sources; + ActUserManager *user_manager; + gboolean user_manager_loaded; ++ + /* 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); + + user_manager = act_user_manager_get_default (); + g_object_get (user_manager, "is-loaded", &user_manager_loaded, NULL); + if (user_manager_loaded) +- manager_notify_is_loaded_cb (G_OBJECT (user_manager), NULL, settings); ++ manager_notify_is_loaded_cb (G_OBJECT (user_manager), NULL, ++ manager->priv->input_sources_settings); + else +- g_signal_connect (user_manager, "notify::is-loaded", G_CALLBACK (manager_notify_is_loaded_cb), settings); ++ g_signal_connect (user_manager, "notify::is-loaded", G_CALLBACK (manager_notify_is_loaded_cb), ++ manager->priv->input_sources_settings); + } + + static void +@@ -812,8 +859,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 (); + +@@ -876,10 +930,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; + } + diff --git a/debian/patches/series b/debian/patches/series index 9791d9b..291dbcd 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -9,3 +9,4 @@ revert-gsettings-removals.patch revert-mediakeys-dbus-interface-drop.patch ubuntu_ibus_configs.patch git_binary_encoding.patch +keyboard-Enable-ibus-for-OSK-purposes.patch
-- ubuntu-desktop mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop
