From 481c151367072bf3ab0f81af553ac5e28484ddc47e1e594d3b7e673dce2c562a Mon Sep 17 00:00:00 2001 From: Vincent Untz Date: Fri, 28 Oct 2011 19:57:00 +0000 Subject: [PATCH] Accepting request 89705 from home:vuntz:branches:GNOME:Factory Fix bnc#723382 OBS-URL: https://build.opensuse.org/request/show/89705 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gtk3?expand=0&rev=64 --- gtk3-immodule-fallback.patch | 81 ++++++++++++++++++++++++++++++++++++ gtk3.changes | 8 ++++ gtk3.spec | 3 ++ 3 files changed, 92 insertions(+) create mode 100644 gtk3-immodule-fallback.patch diff --git a/gtk3-immodule-fallback.patch b/gtk3-immodule-fallback.patch new file mode 100644 index 0000000..ed4ae70 --- /dev/null +++ b/gtk3-immodule-fallback.patch @@ -0,0 +1,81 @@ +diff --git a/gtk/gtkimmodule.c b/gtk/gtkimmodule.c +index 593a868..c5bd139 100644 +--- a/gtk/gtkimmodule.c ++++ b/gtk/gtkimmodule.c +@@ -648,6 +648,26 @@ match_locale (const gchar *locale, + return 0; + } + ++static const gchar * ++lookup_immodule (gchar **immodules_list) ++{ ++ while (immodules_list && *immodules_list) ++ { ++ if (g_strcmp0 (*immodules_list, SIMPLE_ID) == 0) ++ return SIMPLE_ID; ++ else ++ { ++ GtkIMModule *module; ++ module = g_hash_table_lookup (contexts_hash, *immodules_list); ++ if (module) ++ return module->contexts[0]->context_id; ++ } ++ immodules_list++; ++ } ++ ++ return NULL; ++} ++ + /** + * _gtk_im_module_get_default_context_id: + * @client_window: a window +@@ -664,7 +684,7 @@ _gtk_im_module_get_default_context_id (GdkWindow *client_window) + const gchar *context_id = NULL; + gint best_goodness = 0; + gint i; +- gchar *tmp_locale, *tmp; ++ gchar *tmp_locale, *tmp, **immodules; + const gchar *envvar; + GdkScreen *screen; + GtkSettings *settings; +@@ -672,11 +692,16 @@ _gtk_im_module_get_default_context_id (GdkWindow *client_window) + if (!contexts_hash) + gtk_im_module_initialize (); + +- envvar = g_getenv ("GTK_IM_MODULE"); +- if (envvar && +- (strcmp (envvar, SIMPLE_ID) == 0 || +- g_hash_table_lookup (contexts_hash, envvar))) +- return envvar; ++ envvar = g_getenv("GTK_IM_MODULE"); ++ if (envvar) ++ { ++ immodules = g_strsplit(envvar, ":", 0); ++ context_id = lookup_immodule(immodules); ++ g_strfreev(immodules); ++ ++ if (context_id) ++ return context_id; ++ } + + /* Check if the certain immodule is set in XSETTINGS. + */ +@@ -687,15 +712,9 @@ _gtk_im_module_get_default_context_id (GdkWindow *client_window) + g_object_get (G_OBJECT (settings), "gtk-im-module", &tmp, NULL); + if (tmp) + { +- if (strcmp (tmp, SIMPLE_ID) == 0) +- context_id = SIMPLE_ID; +- else +- { +- GtkIMModule *module; +- module = g_hash_table_lookup (contexts_hash, tmp); +- if (module) +- context_id = module->contexts[0]->context_id; +- } ++ immodules = g_strsplit(tmp, ":", 0); ++ context_id = lookup_immodule(immodules); ++ g_strfreev(immodules); + g_free (tmp); + + if (context_id) diff --git a/gtk3.changes b/gtk3.changes index 70e7e90..fe8d220 100644 --- a/gtk3.changes +++ b/gtk3.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri Oct 28 12:50:50 UTC 2011 - vuntz@opensuse.org + +- Add gtk3-immodule-fallback.patch: make it possible to specify + fallback input method modules in the GTK_IM_MODULE environment + variable. This is useful in case a module doesn't exist for both + gtk2 and gtk3. Fix bnc#723382. + ------------------------------------------------------------------- Sat Oct 15 06:16:34 UTC 2011 - vuntz@opensuse.org diff --git a/gtk3.spec b/gtk3.spec index eec8f9c..c8dd808 100644 --- a/gtk3.spec +++ b/gtk3.spec @@ -41,6 +41,8 @@ Patch0: gtk3-GTK_PATH64.patch Patch1: gtk3-path-local.patch # PATCH-FIX-UPSTREAM gtk3-bnc130159-bgo319483-async-font-selection.patch bnc130159 bgo319483 federico@novell.com - Load fonts asynchronously in GtkFontSelection to make it appear faster for CJK languages Patch3: gtk3-bnc130159-bgo319483-async-font-selection.patch +# PATCH-FEATURE-UPSTREAM gtk3-immodule-fallback.patch bgo#603559 bnc#723382 vuntz@opensuse.org -- Make it possible to specify fallback im modules in GTK_IM_MODULE; useful in case a module doesn't exist for both gtk2 and gtk3 +Patch4: gtk3-immodule-fallback.patch BuildRequires: fdupes BuildRequires: cups-devel BuildRequires: pkgconfig(atk) >= 2.1.5 @@ -284,6 +286,7 @@ cp -a %{S:1} . %endif %patch1 -p0 %patch3 -p1 +%patch4 -p1 %build %configure \