summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2018-02-15 03:01:43 +0000
committerMatthias Clasen <mclasen@redhat.com>2018-02-15 03:01:43 +0000
commitc2531b7ff2069d34f34025b17247389d7838cbb7 (patch)
tree24eb71d878095add6ad04571c23324b351965ad8 /gtk
parent753138a7cc3814ee811eb0dd28e3b3c61cde063c (diff)
parent21e9fe4f55a611945f17eef6a0c0fd681a511ea3 (diff)
downloadgtk+-c2531b7ff2069d34f34025b17247389d7838cbb7.tar.gz
Merge branch 'wip/carlosg/imwayland' into 'master'
modules: Add wayland IM implementation See merge request GNOME/gtk!4
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkimmodule.c3
-rw-r--r--gtk/gtksettings.c25
2 files changed, 28 insertions, 0 deletions
diff --git a/gtk/gtkimmodule.c b/gtk/gtkimmodule.c
index f3f25409bc..a1099e2dfa 100644
--- a/gtk/gtkimmodule.c
+++ b/gtk/gtkimmodule.c
@@ -460,6 +460,9 @@ gtk_im_module_initialize (void)
#ifdef INCLUDE_IM_broadway
do_builtin (broadway);
#endif
+#ifdef INCLUDE_IM_wayland
+ do_builtin (wayland);
+#endif
#undef do_builtin
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 6deb1f05cb..c3f52dcb52 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -1173,6 +1173,31 @@ gtk_settings_create_for_display (GdkDisplay *display)
NULL);
else
#endif
+#ifdef GDK_WINDOWING_WAYLAND
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ {
+ const gchar *immodule = NULL;
+
+ if (gdk_wayland_display_query_registry (display,
+ "gtk_text_input_manager"))
+ {
+ settings = g_object_new (GTK_TYPE_SETTINGS,
+ "gtk-im-module", "wayland",
+ NULL);
+ }
+ else
+ {
+ /* Fallback to other IM methods if the compositor does not
+ * implement the interface(s).
+ */
+ settings = g_object_new (GTK_TYPE_SETTINGS, NULL);
+ }
+
+ immodule = "wayland";
+
+ }
+ else
+#endif
settings = g_object_new (GTK_TYPE_SETTINGS, NULL);
settings->priv->display = display;