File gnome-settings-daemon-dont-override-xim-presets.patch of Package gnome-settings-daemon

From: Takashi Iwai <tiwai@suse.de>
Subject: Don't override preset xim setups
References: boo#947576

When $QT_IM_MODULE or $XMODIFIERS has been already set beforehand,
we should honor it and not override brutally.  This makes GNOME as
a good citizen coping with other IMs more smoothly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

---
 gnome-settings-daemon/gnome-settings-daemon-localeexec.in |    4 ++--
 gnome-settings-daemon/main.c                              |   11 +++++++++--
 2 files changed, 11 insertions(+), 4 deletions(-)

Index: gnome-settings-daemon-3.16.3/gnome-settings-daemon/gnome-settings-daemon-localeexec.in
===================================================================
--- gnome-settings-daemon-3.16.3.orig/gnome-settings-daemon/gnome-settings-daemon-localeexec.in
+++ gnome-settings-daemon-3.16.3/gnome-settings-daemon/gnome-settings-daemon-localeexec.in
@@ -13,8 +13,8 @@ if [ -n "$REGION" ]; then
 fi
 
 if [ -x @prefix@/bin/ibus-daemon ]; then
-  export QT_IM_MODULE=ibus
-  export XMODIFIERS=@im=ibus
+  test -z "$QT_IM_MODULE" && export QT_IM_MODULE=ibus
+  test -z "$XMODIFIERS" && export XMODIFIERS=@im=ibus
 fi
 
 exec @libexecdir@/gnome-settings-daemon
Index: gnome-settings-daemon-3.16.3/gnome-settings-daemon/main.c
===================================================================
--- gnome-settings-daemon-3.16.3.orig/gnome-settings-daemon/main.c
+++ gnome-settings-daemon-3.16.3/gnome-settings-daemon/main.c
@@ -255,9 +255,16 @@ is_program_in_path (const char *binary)
 static void
 set_legacy_ibus_env_vars (GDBusProxy *proxy)
 {
+	const char *p;
         if (is_program_in_path ("ibus-daemon")) {
-                set_session_env (proxy, "QT_IM_MODULE", "ibus");
-                set_session_env (proxy, "XMODIFIERS", "@im=ibus");
+                p = getenv ("QT_IM_MODULE");
+                if (!p || !*p)
+                        p = "ibus";
+                set_session_env (proxy, "QT_IM_MODULE", p);
+                p = getenv ("XMODIFIERS");
+                if (!p || !*p)
+                        p = "@im=ibus";
+                set_session_env (proxy, "XMODIFIERS", p);
         }
 }
 
openSUSE Build Service is sponsored by