[ibus] Bumped to 1.4.99.20120317
Takao Fujiwara
fujiwara at fedoraproject.org
Sun Mar 18 09:48:45 UTC 2012
commit 19c65a75428342fe4072e034363020a20489c878
Author: Takao Fujiwara <tfujiwar at redhat.com>
Date: Sun Mar 18 18:41:41 2012 +0900
Bumped to 1.4.99.20120317
.gitignore | 2 +
ibus-530711-preload-sys.patch | 839 +++++++++++--------------------------
ibus-541492-xkb.patch | 141 ++++---
ibus-HEAD.patch | 248 ++++++++---
ibus-xx-no-use.diff | 221 ++++++++++
ibus-xx-setup-frequent-lang.patch | 24 +-
ibus.spec | 136 +++----
sources | 4 +-
8 files changed, 806 insertions(+), 809 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 7602b8d..49654d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ ibus-1.3.6.tar.gz
/ibus-1.3.99.20110817.tar.gz
/ibus-1.4.99.20120203.tar.gz
/ibus-1.4.99.20120304.tar.gz
+/ibus-1.4.99.20120317.tar.gz
/ibus-gjs-3.0.2.20110823.tar.gz
/ibus-gjs-3.1.4.20110823.tar.gz
/ibus-gjs-3.0.2.20110908.tar.gz
@@ -37,3 +38,4 @@ ibus-1.3.6.tar.gz
/ibus-gjs-3.2.1.20111230.tar.gz
/ibus-gjs-3.3.3.20120203.tar.gz
/ibus-gjs-3.3.90.20120308.tar.gz
+/ibus-gjs-3.3.90.20120317.tar.gz
diff --git a/ibus-530711-preload-sys.patch b/ibus-530711-preload-sys.patch
index 941e7e9..1c6e2f7 100644
--- a/ibus-530711-preload-sys.patch
+++ b/ibus-530711-preload-sys.patch
@@ -1,6 +1,6 @@
-From 8f5bb828744532bcfded7e92f3a1db1f26e567e8 Mon Sep 17 00:00:00 2001
+From 38cfe0622ece31d4aff2827a7d67f7250f0e0d5e Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Fri, 30 Dec 2011 15:46:56 +0900
+Date: Fri, 16 Mar 2012 20:47:35 +0900
Subject: [PATCH] Reload preload engines until users customize the list.
The idea is, if users don't customize the preload_engines with ibus-setup,
@@ -17,507 +17,20 @@ on ibus-setup, ibus-setup sets 'preload_engine_mode' as
IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value
'preload_engines'.
---
- bus/ibusimpl.c | 412 +++++++++++++++++++++++++++++++++++++++-----------
- data/ibus.schemas.in | 15 ++-
- ibus/common.py | 6 +
- setup/main.py | 73 ++++++++-
- setup/setup.ui | 21 +++-
- src/ibustypes.h | 10 ++
- 6 files changed, 440 insertions(+), 97 deletions(-)
+ data/ibus.schemas.in | 24 +++++++++
+ setup/main.py | 61 +++++++++++++++++++++--
+ setup/setup.ui | 21 +++++++-
+ src/ibustypes.h | 10 ++++
+ ui/gtk3/panel.vala | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 245 insertions(+), 7 deletions(-)
-diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
-index 059d660..bba9353 100644
---- a/bus/ibusimpl.c
-+++ b/bus/ibusimpl.c
-@@ -142,6 +142,9 @@ static void bus_ibus_impl_set_previous_engine
- static void bus_ibus_impl_set_preload_engines
- (BusIBusImpl *ibus,
- GVariant *value);
-+static void bus_ibus_impl_set_preload_engine_mode
-+ (BusIBusImpl *ibus,
-+ GVariant *value);
- static void bus_ibus_impl_set_use_sys_layout
- (BusIBusImpl *ibus,
- GVariant *value);
-@@ -283,6 +286,269 @@ _panel_destroy_cb (BusPanelProxy *panel,
- }
-
- static void
-+_config_set_value_done (GObject *object,
-+ GAsyncResult *res,
-+ gpointer user_data)
-+{
-+ IBusConfig *config = (IBusConfig *) object;
-+ GVariant *value = (GVariant *) user_data;
-+ GError *error = NULL;
-+
-+ g_assert (IBUS_IS_CONFIG (config));
-+
-+ if (!ibus_config_set_value_async_finish (config, res, &error)) {
-+ if (error) {
-+ g_error_free (error);
-+ }
-+ }
-+ g_variant_unref (value);
-+}
-+
-+#ifndef OS_CHROMEOS
-+static gint
-+_engine_desc_cmp (IBusEngineDesc *desc1,
-+ IBusEngineDesc *desc2)
-+{
-+ return - ((gint) ibus_engine_desc_get_rank (desc1)) +
-+ ((gint) ibus_engine_desc_get_rank (desc2));
-+}
-+#endif
-+
-+#ifndef OS_CHROMEOS
-+static gint
-+_get_config_preload_engine_mode (BusIBusImpl *ibus)
-+{
-+ GVariant *variant = NULL;
-+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
-+
-+ g_assert (BUS_IS_IBUS_IMPL (ibus));
-+
-+ if (ibus->config == NULL) {
-+ return preload_engine_mode;
-+ }
-+
-+ variant = ibus_config_get_value (ibus->config, "general",
-+ "preload_engines");
-+ if (variant != NULL && g_variant_classify (variant) == G_VARIANT_CLASS_ARRAY) {
-+ GVariantIter iter;
-+ const gchar *engine_name = NULL;
-+ g_variant_iter_init (&iter, variant);
-+ g_variant_iter_loop (&iter, "&s", &engine_name);
-+ if (g_strcmp0 (engine_name, "ibus_null_engine") == 0) {
-+ g_variant_unref (variant);
-+ variant = NULL;
-+ }
-+ }
-+ if (variant == NULL) {
-+ /* Set LANG_RELATIVE mode for the initial login */
-+ preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE;
-+ variant = g_variant_ref_sink (g_variant_new ("i", preload_engine_mode));
-+ ibus_config_set_value_async (ibus->config, "general",
-+ "preload_engine_mode", variant,
-+ -1,
-+ NULL,
-+ _config_set_value_done,
-+ variant);
-+ return preload_engine_mode;
-+ } else {
-+ g_variant_unref (variant);
-+ }
-+
-+ variant = ibus_config_get_value (ibus->config, "general",
-+ "preload_engine_mode");
-+ if (variant != NULL) {
-+ if (g_variant_classify (variant) == G_VARIANT_CLASS_INT32) {
-+ preload_engine_mode = g_variant_get_int32 (variant);
-+ }
-+ g_variant_unref (variant);
-+ }
-+
-+ return preload_engine_mode;
-+}
-+#endif
-+
-+static int
-+_compare_engine_list_value (GVariant *value_a, GVariant *value_b)
-+{
-+ GVariant *value;
-+ GVariantIter iter;
-+ const gchar *engine_name = NULL;
-+ gchar *concat_engine_names;
-+ gchar *concat_engine_names_a = NULL;
-+ gchar *concat_engine_names_b = NULL;
-+ int retval = 0;
-+
-+ value = value_a;
-+ concat_engine_names = NULL;
-+ if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
-+ g_variant_iter_init (&iter, value);
-+ while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
-+ gchar *tmp = g_strdup_printf ("%s::%s",
-+ concat_engine_names ? concat_engine_names : "",
-+ engine_name ? engine_name : "");
-+ g_free (concat_engine_names);
-+ concat_engine_names = tmp;
-+ }
-+ }
-+ concat_engine_names_a = concat_engine_names;
-+
-+ value = value_b;
-+ concat_engine_names = NULL;
-+ if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
-+ g_variant_iter_init (&iter, value);
-+ while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
-+ gchar *tmp = g_strdup_printf ("%s::%s",
-+ concat_engine_names ? concat_engine_names : "",
-+ engine_name ? engine_name : "");
-+ g_free (concat_engine_names);
-+ concat_engine_names = tmp;
-+ }
-+ }
-+ concat_engine_names_b = concat_engine_names;
-+
-+ retval = g_strcmp0 (concat_engine_names_a, concat_engine_names_b);
-+ g_free (concat_engine_names_a);
-+ g_free (concat_engine_names_b);
-+ return retval;
-+}
-+
-+static void
-+_preload_engines_config_get_value_done (GObject *object,
-+ GAsyncResult *res,
-+ gpointer user_data)
-+{
-+ IBusConfig *config = (IBusConfig *) object;
-+ GVariant *new_value = (GVariant *) user_data;
-+ GVariant *value = NULL;
-+ GError *error = NULL;
-+
-+ g_assert (IBUS_IS_CONFIG (config));
-+
-+ value = ibus_config_get_value_async_finish (config, res, &error);
-+ if (error) {
-+ g_error_free (error);
-+ }
-+ if (_compare_engine_list_value (value, new_value) != 0) {
-+ ibus_config_set_value_async (config, "general",
-+ "preload_engines", new_value,
-+ -1,
-+ NULL,
-+ _config_set_value_done,
-+ new_value);
-+ } else if (new_value) {
-+ g_variant_unref (new_value);
-+ }
-+ if (value) {
-+ g_variant_unref (value);
-+ }
-+}
-+
-+static void
-+_set_preload_engines (BusIBusImpl *ibus,
-+ GVariant *value)
-+{
-+ GList *engine_list = NULL;
-+
-+ g_assert (BUS_IS_IBUS_IMPL (ibus));
-+
-+ g_list_foreach (ibus->engine_list, (GFunc) g_object_unref, NULL);
-+ g_list_free (ibus->engine_list);
-+
-+ if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
-+ GVariantIter iter;
-+ g_variant_iter_init (&iter, value);
-+ const gchar *engine_name = NULL;
-+ while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
-+ IBusEngineDesc *engine = bus_registry_find_engine_by_name (ibus->registry, engine_name);
-+ if (engine == NULL || g_list_find (engine_list, engine) != NULL)
-+ continue;
-+ engine_list = g_list_append (engine_list, engine);
-+ }
-+
-+ if (engine_list != NULL &&
-+ ibus->config != NULL) {
-+ /* sync function will effects the startup performance.
-+ * We'd always like to save the value so that ibus-setup
-+ * get the updated engine list. */
-+ ibus_config_get_value_async (ibus->config, "general",
-+ "preload_engines",
-+ -1,
-+ NULL,
-+ _preload_engines_config_get_value_done,
-+ g_variant_ref_sink (value));
-+ } else {
-+ /* We don't update preload_engines with an empty string for safety.
-+ * Just unref the floating value. */
-+ g_variant_unref (value);
-+ }
-+ } else if (value != NULL) {
-+ g_variant_unref (value);
-+ }
-+
-+ g_list_foreach (engine_list, (GFunc) g_object_ref, NULL);
-+ ibus->engine_list = engine_list;
-+
-+ if (ibus->engine_list) {
-+ BusComponent *component = bus_component_from_engine_desc ((IBusEngineDesc *) ibus->engine_list->data);
-+ if (component && !bus_component_is_running (component)) {
-+ bus_component_start (component, g_verbose);
-+ }
-+ }
-+
-+ bus_ibus_impl_check_global_engine (ibus);
-+ bus_ibus_impl_update_engines_hotkey_profile (ibus);
-+}
-+
-+#ifndef OS_CHROMEOS
-+static void
-+_set_language_relative_preload_engines (BusIBusImpl *ibus)
-+{
-+ gchar *lang = NULL;
-+ gchar *p = NULL;
-+ GList *engines = NULL;
-+ GList *list;
-+ GVariantBuilder builder;
-+
-+ g_assert (BUS_IS_IBUS_IMPL (ibus));
-+
-+ /* The setlocale call first checks LC_ALL. If it's not available, checks
-+ * LC_CTYPE. If it's also not available, checks LANG. */
-+ lang = g_strdup (setlocale (LC_CTYPE, NULL));
-+ if (lang == NULL) {
-+ return;
-+ }
-+
-+ p = index (lang, '.');
-+ if (p) {
-+ *p = '\0';
-+ }
-+
-+ engines = bus_registry_get_engines_by_language (ibus->registry, lang);
-+ if (engines == NULL) {
-+ p = index (lang, '_');
-+ if (p) {
-+ *p = '\0';
-+ engines = bus_registry_get_engines_by_language (ibus->registry, lang);
-+ }
-+ }
-+ g_free (lang);
-+
-+ /* sort engines by rank */
-+ engines = g_list_sort (engines, (GCompareFunc) _engine_desc_cmp);
-+
-+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
-+ for (list = engines; list != NULL; list = list->next) {
-+ IBusEngineDesc *desc = (IBusEngineDesc *)list->data;
-+ /* ignore engines with rank <== 0 */
-+ if (ibus_engine_desc_get_rank (desc) > 0)
-+ g_variant_builder_add (&builder, "s", ibus_engine_desc_get_name (desc));
-+ }
-+ _set_preload_engines (ibus, g_variant_builder_end (&builder));
-+ g_list_free (engines);
-+}
-+#endif
-+
-+static void
- bus_ibus_impl_set_hotkey (BusIBusImpl *ibus,
- GQuark hotkey,
- GVariant *value)
-@@ -392,35 +658,50 @@ static void
- bus_ibus_impl_set_preload_engines (BusIBusImpl *ibus,
- GVariant *value)
- {
-- GList *engine_list = NULL;
--
-- g_list_foreach (ibus->engine_list, (GFunc) g_object_unref, NULL);
-- g_list_free (ibus->engine_list);
-+#ifndef OS_CHROMEOS
-+ gint preload_engine_mode = _get_config_preload_engine_mode (ibus);
-
-- if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
-- GVariantIter iter;
-- g_variant_iter_init (&iter, value);
-- const gchar *engine_name = NULL;
-- while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
-- IBusEngineDesc *engine = bus_registry_find_engine_by_name (ibus->registry, engine_name);
-- if (engine == NULL || g_list_find (engine_list, engine) != NULL)
-- continue;
-- engine_list = g_list_append (engine_list, engine);
-+ if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
-+ if (value == NULL) {
-+ _set_language_relative_preload_engines (ibus);
-+ } else {
-+ _set_preload_engines (ibus, value);
- }
- }
-+#else
-+ _set_preload_engines (ibus, value);
-+#endif
-+}
-
-- g_list_foreach (engine_list, (GFunc) g_object_ref, NULL);
-- ibus->engine_list = engine_list;
-+/**
-+ * bus_ibus_impl_set_preload_engine_mode:
-+ *
-+ * A function to be called when "preload_engine_mode" config is updated.
-+ */
-+static void
-+bus_ibus_impl_set_preload_engine_mode (BusIBusImpl *ibus,
-+ GVariant *value)
-+{
-+#ifndef OS_CHROMEOS
-+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
-
-- if (ibus->engine_list) {
-- BusComponent *component = bus_component_from_engine_desc ((IBusEngineDesc *) ibus->engine_list->data);
-- if (component && !bus_component_is_running (component)) {
-- bus_component_start (component, g_verbose);
-- }
-+ /* bus_ibus_impl_reload_config() sets value = NULL.
-+ * bus_ibus_impl_reload_config() is always called when
-+ * RequestName signal is sent so it is good to get the gconf value
-+ * again when value == NULL.
-+ */
-+ if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_INT32) {
-+ preload_engine_mode = g_variant_get_int32 (value);
-+ } else {
-+ preload_engine_mode = _get_config_preload_engine_mode (ibus);
- }
-
-- bus_ibus_impl_check_global_engine (ibus);
-- bus_ibus_impl_update_engines_hotkey_profile (ibus);
-+ if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
-+ return;
-+ }
-+
-+ _set_language_relative_preload_engines (ibus);
-+#endif
- }
-
- /**
-@@ -501,89 +782,47 @@ bus_ibus_impl_set_use_global_engine (BusIBusImpl *ibus,
- }
- }
-
--#ifndef OS_CHROMEOS
--static gint
--_engine_desc_cmp (IBusEngineDesc *desc1,
-- IBusEngineDesc *desc2)
--{
-- return - ((gint) ibus_engine_desc_get_rank (desc1)) +
-- ((gint) ibus_engine_desc_get_rank (desc2));
--}
--#endif
--
- /**
- * bus_ibus_impl_set_default_preload_engines:
- *
-- * If the "preload_engines" config variable is not set yet, set the default value which is determined based on a current locale.
-+ * bus_ibus_impl_set_default_preload_engines handles the gconf value
-+ * /desktop/ibus/general/preload_engines and preload_engine_mode.
-+ * The idea is, if users don't customize the preload_engines with ibus-setup,
-+ * users would prefer to load the system default engines again by login.
-+ * The gconf value 'preload_engine_mode' is
-+ * IBUS_PRELOAD_ENGINE_MODE_USER by default but set
-+ * IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE for the initial login.
-+ * If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE,
-+ * ibus-daemon loads the system preload engines by langs.
-+ * If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_USER,
-+ * ibus-daemon do not update the gconf value preload_engines.
-+ * On the other hand, if users enable the customized engine checkbutton
-+ * on ibus-setup, ibus-setup sets 'preload_engine_mode' as
-+ * IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value
-+ * 'preload_engines'.
- */
- static void
- bus_ibus_impl_set_default_preload_engines (BusIBusImpl *ibus)
- {
- #ifndef OS_CHROMEOS
-- g_assert (BUS_IS_IBUS_IMPL (ibus));
--
- static gboolean done = FALSE;
-+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
-+
-+ g_assert (BUS_IS_IBUS_IMPL (ibus));
-
- if (done || ibus->config == NULL) {
- return;
- }
-
-- GVariant *variant = ibus_config_get_value (ibus->config, "general", "preload_engines");
-- if (variant != NULL) {
-+ preload_engine_mode = _get_config_preload_engine_mode (ibus);
-+
-+ if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
- done = TRUE;
-- g_variant_unref (variant);
- return;
- }
-
- done = TRUE;
--
-- /* The setlocale call first checks LC_ALL. If it's not available, checks
-- * LC_CTYPE. If it's also not available, checks LANG. */
-- gchar *lang = g_strdup (setlocale (LC_CTYPE, NULL));
-- if (lang == NULL) {
-- return;
-- }
--
-- gchar *p = index (lang, '.');
-- if (p) {
-- *p = '\0';
-- }
--
-- GList *engines = bus_registry_get_engines_by_language (ibus->registry, lang);
-- if (engines == NULL) {
-- p = index (lang, '_');
-- if (p) {
-- *p = '\0';
-- engines = bus_registry_get_engines_by_language (ibus->registry, lang);
-- }
-- }
-- g_free (lang);
--
-- /* sort engines by rank */
-- engines = g_list_sort (engines, (GCompareFunc) _engine_desc_cmp);
--
-- GVariantBuilder builder;
-- g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
-- GList *list;
-- for (list = engines; list != NULL; list = list->next) {
-- IBusEngineDesc *desc = (IBusEngineDesc *) list->data;
-- /* ignore engines with rank <= 0 */
-- if (ibus_engine_desc_get_rank (desc) > 0)
-- g_variant_builder_add (&builder, "s", ibus_engine_desc_get_name (desc));
-- }
--
-- GVariant *value = g_variant_builder_end (&builder);
-- if (value != NULL) {
-- if (g_variant_n_children (value) > 0) {
-- ibus_config_set_value (ibus->config,
-- "general", "preload_engines", value);
-- } else {
-- /* We don't update preload_engines with an empty string for safety.
-- * Just unref the floating value. */
-- g_variant_unref (value);
-- }
-- }
-- g_list_free (engines);
-+ _set_language_relative_preload_engines (ibus);
- #endif
- }
-
-@@ -599,6 +838,7 @@ const static struct {
- { "general/hotkey", "next_engine_in_menu", bus_ibus_impl_set_next_engine_in_menu },
- { "general/hotkey", "previous_engine", bus_ibus_impl_set_previous_engine },
- { "general", "preload_engines", bus_ibus_impl_set_preload_engines },
-+ { "general", "preload_engine_mode", bus_ibus_impl_set_preload_engine_mode },
- { "general", "use_system_keyboard_layout", bus_ibus_impl_set_use_sys_layout },
- { "general", "use_global_engine", bus_ibus_impl_set_use_global_engine },
- { "general", "embed_preedit_text", bus_ibus_impl_set_embed_preedit_text },
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
-index e0a6a37..2418c95 100644
+index 05c0174..8ca33ac 100644
--- a/data/ibus.schemas.in
+++ b/data/ibus.schemas.in
-@@ -6,7 +6,7 @@
- <applyto>/desktop/ibus/general/preload_engines</applyto>
- <owner>ibus</owner>
- <type>list</type>
-- <default>[]</default>
-+ <default>[ibus_null_engine]</default>
- <list_type>string</list_type>
- <locale name="C">
- <short>Preload engines</short>
-@@ -14,6 +14,19 @@
- </locale>
- </schema>
+@@ -2,6 +2,30 @@
+ <gconfschemafile>
+ <schemalist>
<schema>
+ <key>/schemas/desktop/ibus/general/preload_engine_mode</key>
+ <applyto>/desktop/ibus/general/preload_engine_mode</applyto>
@@ -526,125 +39,80 @@ index e0a6a37..2418c95 100644
+ <default>0</default>
+ <locale name="C">
+ <short>Preload engine mode</short>
-+ <long>Preload engines are loaded with this mode.
-+ 0 = user customized engines.
-+ 1 = language related engines.</long>
++ <long>Preload engines are loaded with this mode.
++ 0 = user customized engines.
++ 1 = language related engines.</long>
+ </locale>
+ </schema>
+ <schema>
- <key>/schemas/desktop/ibus/general/hotkey/trigger</key>
- <applyto>/desktop/ibus/general/hotkey/trigger</applyto>
++ <key>/schemas/desktop/ibus/general/preload_engines_inited</key>
++ <applyto>/desktop/ibus/general/preload_engines_inited</applyto>
++ <owner>ibus</owner>
++ <type>bool</type>
++ <default>false</default>
++ <locale name="C">
++ <short>The key preload_engines is initialized</short>
++ <long>The key preload_engines is initialized</long>
++ </locale>
++ </schema>
++ <schema>
+ <key>/schemas/desktop/ibus/general/preload_engines</key>
+ <applyto>/desktop/ibus/general/preload_engines</applyto>
<owner>ibus</owner>
-diff --git a/ibus/common.py b/ibus/common.py
-index 6483aae..127ed93 100644
---- a/ibus/common.py
-+++ b/ibus/common.py
-@@ -40,6 +40,8 @@ __all__ = (
- "BUS_REQUEST_NAME_REPLY_IN_QUEUE",
- "BUS_REQUEST_NAME_REPLY_EXISTS",
- "BUS_REQUEST_NAME_REPLY_ALREADY_OWNER",
-+ "PRELOAD_ENGINE_MODE_USER",
-+ "PRELOAD_ENGINE_MODE_LANG_RELATIVE",
- "default_reply_handler",
- "default_error_handler",
- "DEFAULT_ASYNC_HANDLERS",
-@@ -150,6 +152,10 @@ BUS_REQUEST_NAME_REPLY_IN_QUEUE = 2
- BUS_REQUEST_NAME_REPLY_EXISTS = 3
- BUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4
-
-+# define preload engine mode
-+PRELOAD_ENGINE_MODE_USER = 0
-+PRELOAD_ENGINE_MODE_LANG_RELATIVE = 1
-+
- def default_reply_handler( *args):
- pass
-
diff --git a/setup/main.py b/setup/main.py
-index 97e05a4..7d734ae 100644
+index 9638da0..132e9f4 100644
--- a/setup/main.py
+++ b/setup/main.py
-@@ -92,6 +92,7 @@ class Setup(object):
- # keyboard shortcut
- # trigger
- self.__config = self.__bus.get_config()
-+ self.__config.connect("value-changed", self.__config_value_changed_cb)
- shortcuts = self.__config.get_value(
- "general/hotkey", "trigger",
- ibus.CONFIG_GENERAL_SHORTCUT_TRIGGER_DEFAULT)
-@@ -213,15 +214,22 @@ class Setup(object):
- self.__checkbutton_use_global_engine.connect("toggled", self.__checkbutton_use_global_engine_toggled_cb)
+@@ -181,6 +181,20 @@ class Setup(object):
+ self.__checkbutton_use_global_engine.connect("toggled",
+ self.__checkbutton_use_global_engine_toggled_cb)
- # init engine page
-+ preload_engine_mode = self.__config.get_value("general",
-+ "preload_engine_mode",
-+ ibus.common.PRELOAD_ENGINE_MODE_USER)
++ # set preload mode
++ preload_engine_mode = IBus.PreloadEngineMode.USER
++ variant = self.__config.get_value("general", "preload_engine_mode")
++ if variant != None:
++ preload_engine_mode = variant.get_int32()
+ button = self.__builder.get_object("checkbutton_preload_engine_mode")
-+ if preload_engine_mode == ibus.common.PRELOAD_ENGINE_MODE_USER:
++ if preload_engine_mode == IBus.PreloadEngineMode.USER:
+ button.set_active(True)
+ self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(True)
+ else:
+ button.set_active(False)
+ self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(False)
+ button.connect("toggled", self.__checkbutton_preload_engine_mode_toggled_cb)
++
+ # init engine page
self.__engines = self.__bus.list_engines()
- self.__combobox = self.__builder.get_object("combobox_engines")
- self.__combobox.set_engines(self.__engines)
+ value = self.__config.get_value("general", "load_xkb_layouts")
+@@ -245,6 +259,7 @@ class Setup(object):
+ self.__checkbutton_auto_start_toggled_cb)
-- tmp_dict = {}
-- for e in self.__engines:
-- tmp_dict[e.name] = e
-- engine_names = self.__config.get_value("general", "preload_engines", [])
-- engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
-+ engines = self.__bus.list_active_engines()
+ self.__config = self.__bus.get_config()
++ self.__config.connect("value-changed", self.__config_value_changed_cb)
- self.__treeview = self.__builder.get_object("treeview_engines")
- self.__treeview.set_engines(engines)
-@@ -251,7 +259,8 @@ class Setup(object):
+ self.__init_hotkey()
+ self.__init_panel()
+@@ -253,8 +268,8 @@ class Setup(object):
def __combobox_notify_active_engine_cb(self, combobox, property):
engine = self.__combobox.get_active_engine()
button = self.__builder.get_object("button_engine_add")
-- button.set_sensitive(engine != None and engine not in self.__treeview.get_engines())
+- button.set_sensitive(
+- engine != None and engine not in self.__treeview.get_engines())
+ button.set_sensitive(engine != None and \
-+ engine.name not in map(lambda e: e.name, self.__treeview.get_engines()))
++ engine.get_name() not in map(lambda e: e.get_name(), self.__treeview.get_engines()))
def __get_engine_setup_exec_args(self, engine):
args = []
-@@ -293,6 +302,26 @@ class Setup(object):
- engine_names = map(lambda e: e.name, engines)
- self.__config.set_list("general", "preload_engines", engine_names, "s")
-
-+ def __get_engine_descs_from_names(self, engine_names):
-+ tmp_dict = {}
-+ for e in self.__engines:
-+ tmp_dict[e.name] = e
-+ engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
-+ return engines
-+
-+ def __compare_descs(self, engines_a, engines_b):
-+ engines = engines_a
-+ concat_engine_names = ""
-+ for engine in engines:
-+ concat_engine_names = "%s::%s" % (concat_engine_names, engine.name)
-+ concat_engine_names_a = concat_engine_names
-+ engines = engines_b
-+ concat_engine_names = ""
-+ for engine in engines:
-+ concat_engine_names = "%s::%s" % (concat_engine_names, engine.name)
-+ concat_engine_names_b = concat_engine_names
-+ return concat_engine_names_a == concat_engine_names_b
-+
- def __button_engine_add_cb(self, button):
- engine = self.__combobox.get_active_engine()
- self.__treeview.append_engine(engine)
-@@ -322,6 +351,32 @@ class Setup(object):
+@@ -333,6 +348,34 @@ class Setup(object):
del self.__engine_setup_exec_list[name]
self.__engine_setup_exec_list[name] = os.spawnl(os.P_NOWAIT, *args)
+ def __checkbutton_preload_engine_mode_toggled_cb(self, button):
+ if button.get_active():
++ variant = GLib.Variant.new_int32(IBus.PreloadEngineMode.USER)
+ self.__config.set_value("general",
+ "preload_engine_mode",
-+ ibus.common.PRELOAD_ENGINE_MODE_USER)
++ variant)
+ self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(True)
+ self.__treeview.notify("engines")
+ else:
@@ -652,41 +120,50 @@ index 97e05a4..7d734ae 100644
+ "cleared immediately and the list will be " \
+ "configured by the login language every time. " \
+ "Do you agree with this?")
-+ dlg = gtk.MessageDialog(type = gtk.MESSAGE_QUESTION,
-+ buttons = gtk.BUTTONS_YES_NO,
++ dlg = Gtk.MessageDialog(type = Gtk.MessageType.QUESTION,
++ buttons = Gtk.ButtonsType.YES_NO,
+ message_format = message)
+ id = dlg.run()
+ dlg.destroy()
+ self.__flush_gtk_events()
-+ if id != gtk.RESPONSE_YES:
++ if id != Gtk.ResponseType.YES:
+ button.set_active(True)
+ return
++ variant = GLib.Variant.new_int32(IBus.PreloadEngineMode.LANG_RELATIVE)
+ self.__config.set_value("general",
+ "preload_engine_mode",
-+ ibus.common.PRELOAD_ENGINE_MODE_LANG_RELATIVE)
++ variant)
+ self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(False)
+
def __init_bus(self):
- try:
- self.__bus = ibus.Bus()
-@@ -512,7 +567,11 @@ class Setup(object):
+ self.__bus = IBus.Bus()
+ if self.__bus.is_connected():
+@@ -543,8 +586,18 @@ class Setup(object):
+ value = GLib.Variant.new_boolean(value)
self.__config.set_value("general", "use_global_engine", value)
- def __config_value_changed_cb(self, bus, section, name, value):
+- def __config_value_changed_cb(self, bus, section, name, value):
- pass
++ def __config_value_changed_cb(self, bus, section, name, variant):
+ if section == 'general' and name == 'preload_engines':
++ value = []
++ if variant != None:
++ value = variant.dup_strv()[0]
+ engines = self.__get_engine_descs_from_names(value)
+ current_engines = self.__treeview.get_engines()
-+ if self.__compare_descs(engines, current_engines) == False:
++ engines_csv = str.join(',', map(lambda e: e.get_name(), engines))
++ current_engines_csv = \
++ str.join(',', map(lambda e: e.get_name(), current_engines))
++ if engines_csv != current_engines_csv:
+ self.__treeview.set_engines(engines)
def __config_reloaded_cb(self, bus):
pass
diff --git a/setup/setup.ui b/setup/setup.ui
-index 57cb597..b2ceef2 100644
+index e37cb32..fec1646 100644
--- a/setup/setup.ui
+++ b/setup/setup.ui
-@@ -582,7 +582,22 @@
+@@ -585,7 +585,22 @@
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
@@ -710,7 +187,7 @@ index 57cb597..b2ceef2 100644
<property name="visible">True</property>
<child>
<object class="GtkAlignment" id="alignment6">
-@@ -749,7 +764,7 @@
+@@ -752,7 +767,7 @@
</child>
</object>
<packing>
@@ -719,7 +196,7 @@ index 57cb597..b2ceef2 100644
</packing>
</child>
<child>
-@@ -788,7 +803,7 @@ You may use up/down buttons to change it.</i></small></property>
+@@ -791,7 +806,7 @@ You may use up/down buttons to change it.</i></small></property>
</object>
<packing>
<property name="expand">False</property>
@@ -749,6 +226,168 @@ index d916265..422eb84 100644
* IBusRectangle:
* @x: x coordinate.
* @y: y coordinate.
+diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
+index f8805e0..7bd0d93 100644
+--- a/ui/gtk3/panel.vala
++++ b/ui/gtk3/panel.vala
+@@ -187,6 +187,8 @@ class Panel : IBus.PanelService {
+ if (m_config != null) {
+ m_config.value_changed.connect(config_value_changed_cb);
+ m_config.watch("general", "preload_engines");
++ m_config.watch("general", "preload_engines_inited");
++ m_config.watch("general", "preload_engine_mode");
+ m_config.watch("general", "engines_order");
+ m_config.watch("panel", "custom_font");
+ m_config.watch("panel", "use_custom_font");
+@@ -246,7 +248,136 @@ class Panel : IBus.PanelService {
+ init_gkbd();
+ }
+
++ GLib.Variant var_engines =
++ m_config.get_value("general", "preload_engines");
++ string[] preload_engines = {};
++
++ if (var_engines != null) {
++ preload_engines = var_engines.dup_strv();
++ }
++
++ bool preload_engines_inited = false;
++ GLib.Variant var_preload_engines_inited =
++ m_config.get_value("general", "preload_engines_inited");
++
++ if (var_preload_engines_inited != null) {
++ preload_engines_inited = var_preload_engines_inited.get_boolean();
++ }
++
++ // Set preload_engines_inited = true for back compatibility
++ if (preload_engines.length != 0 && !preload_engines_inited) {
++ preload_engines_inited = true;
++ m_config.set_value("general",
++ "preload_engines_inited",
++ new GLib.Variant.boolean(true));
++ }
++
+ update_xkb_engines();
++
++ // Before update preload_engine_mode, update_xkb_engines() is called
++ // because config_value_changed_cb() calls update_im_engines().
++ if (!preload_engines_inited) {
++ GLib.Variant variant = new GLib.Variant.int32(
++ IBus.PreloadEngineMode.LANG_RELATIVE);
++ m_config.set_value("general",
++ "preload_engine_mode",
++ variant);
++ }
++
++ update_im_engines();
++
++ if (!preload_engines_inited) {
++ m_config.set_value("general",
++ "preload_engines_inited",
++ new GLib.Variant.boolean(true));
++ }
++ }
++
++ private bool set_lang_relative_preload_engines() {
++ string locale = Intl.setlocale(LocaleCategory.CTYPE, null);
++
++ if (locale == null) {
++ locale = "C";
++ }
++
++ string lang = locale.split(".")[0];
++ GLib.List<IBus.EngineDesc> engines = m_bus.list_engines();
++ string[] im_engines = {};
++
++ for (unowned GLib.List<IBus.EngineDesc> p = engines;
++ p != null;
++ p = p.next) {
++ unowned IBus.EngineDesc engine = p.data;
++ if (engine.get_language() == lang &&
++ engine.get_rank() > 0) {
++ im_engines += engine.get_name();
++ }
++ }
++
++ lang = lang.split("_")[0];
++ if (im_engines.length == 0) {
++ for (unowned GLib.List<IBus.EngineDesc> p = engines;
++ p != null;
++ p = p.next) {
++ unowned IBus.EngineDesc engine = p.data;
++ if (engine.get_language() == lang &&
++ engine.get_rank() > 0) {
++ im_engines += engine.get_name();
++ }
++ }
++ }
++
++ if (im_engines.length == 0) {
++ return false;
++ }
++
++ GLib.Variant var_engines =
++ m_config.get_value("general", "preload_engines");
++ string[] orig_preload_engines = {};
++ string[] preload_engines = {};
++
++ if (var_engines != null) {
++ orig_preload_engines = var_engines.dup_strv();
++ }
++
++ // clear input method engines
++ foreach (string name in orig_preload_engines) {
++ if (name.ascii_ncasecmp("xkb:", 4) != 0) {
++ continue;
++ }
++ preload_engines += name;
++ }
++
++ foreach (string name in im_engines) {
++ if (!(name in preload_engines)) {
++ preload_engines += name;
++ }
++ }
++
++ if ("".joinv(",", orig_preload_engines) !=
++ "".joinv(",", preload_engines)) {
++ m_config.set_value("general",
++ "preload_engines",
++ new GLib.Variant.strv(preload_engines));
++ }
++
++ return true;
++ }
++
++ private void update_im_engines() {
++ int preload_engine_mode = IBus.PreloadEngineMode.USER;
++ GLib.Variant var_preload_engine_mode =
++ m_config.get_value("general", "preload_engine_mode");
++
++ if (var_preload_engine_mode != null) {
++ preload_engine_mode = var_preload_engine_mode.get_int32();
++ }
++
++ if (preload_engine_mode == IBus.PreloadEngineMode.USER) {
++ return;
++ }
++
++ set_lang_relative_preload_engines();
+ }
+
+ private void update_xkb_engines() {
+@@ -421,6 +552,11 @@ class Panel : IBus.PanelService {
+ string section,
+ string name,
+ Variant variant) {
++ if (section == "general" && name == "preload_engine_mode") {
++ update_im_engines();
++ return;
++ }
++
+ if (section == "general" && name == "preload_engines") {
+ update_engines(variant, null);
+ return;
--
-1.7.7.4
+1.7.9.1
diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch
index 4d135f5..352ce4e 100644
--- a/ibus-541492-xkb.patch
+++ b/ibus-541492-xkb.patch
@@ -1,11 +1,11 @@
-From 571e4ab3e28acb90466ac58e3fe9f4efc4b8ba0e Mon Sep 17 00:00:00 2001
+From c58730dd0d9c161a7824105d320f60af769e1f05 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Sun, 4 Mar 2012 22:16:01 +0900
+Date: Fri, 16 Mar 2012 20:45:03 +0900
Subject: [PATCH] Add ibus-xkb and libgnomekbd.
---
configure.ac | 59 +++++
- data/ibus.schemas.in | 58 +++++
+ data/ibus.schemas.in | 60 +++++-
engine/Makefile.am | 22 ++
engine/ibus-xkb-main.c | 111 +++++++++
engine/main.vala | 86 +++++++
@@ -14,30 +14,32 @@ Subject: [PATCH] Add ibus-xkb and libgnomekbd.
engine/xkblib.h | 41 ++++
ibus-1.0.pc.in | 4 +
setup/enginecombobox.py | 6 +-
- setup/main.py | 17 ++-
+ setup/main.py | 28 ++-
src/Makefile.am | 5 +
src/ibus.h | 1 +
src/ibusxkbxml.c | 466 ++++++++++++++++++++++++++++++++++++
src/ibusxkbxml.h | 187 +++++++++++++++
ui/gtk3/Gkbd-3.0.metadata | 1 +
- ui/gtk3/Makefile.am | 45 ++++
+ ui/gtk3/Makefile.am | 48 ++++
+ ui/gtk3/Xkl-1.0.metadata | 3 +
ui/gtk3/gkbdlayout.vala.false | 63 +++++
ui/gtk3/gkbdlayout.vala.true | 111 +++++++++
ui/gtk3/panel.vala | 275 ++++++++++++++++++++--
ui/gtk3/xkblayout.vala | 466 ++++++++++++++++++++++++++++++++++++
- 21 files changed, 2331 insertions(+), 551 deletions(-)
+ 22 files changed, 2346 insertions(+), 555 deletions(-)
create mode 100644 engine/ibus-xkb-main.c
create mode 100644 engine/xkblib.c
create mode 100644 engine/xkblib.h
create mode 100644 src/ibusxkbxml.c
create mode 100644 src/ibusxkbxml.h
create mode 100644 ui/gtk3/Gkbd-3.0.metadata
+ create mode 100644 ui/gtk3/Xkl-1.0.metadata
create mode 100644 ui/gtk3/gkbdlayout.vala.false
create mode 100644 ui/gtk3/gkbdlayout.vala.true
create mode 100644 ui/gtk3/xkblayout.vala
diff --git a/configure.ac b/configure.ac
-index aeb22b4..a516c94 100644
+index 1c4b283..596b30e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -249,6 +249,63 @@ else
@@ -113,28 +115,30 @@ index aeb22b4..a516c94 100644
])
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
-index 53ba05c..3ca0fbc 100644
+index 53ba05c..05c0174 100644
--- a/data/ibus.schemas.in
+++ b/data/ibus.schemas.in
-@@ -38,6 +38,18 @@
- </locale>
- </schema>
- <schema>
-+ <key>/schemas/desktop/ibus/general/hotkey/trigger-accel</key>
-+ <applyto>/desktop/ibus/general/hotkey/trigger-accel</applyto>
+@@ -34,7 +34,19 @@
+ <default>[Control+space,Zenkaku_Hankaku,Alt+Kanji,Alt+grave,Hangul,Alt+Release+Alt_R]</default>
+ <locale name="C">
+ <short>Trigger shortcut keys</short>
+- <long>The shortcut keys for turning input method on or off</long>
++ <long>The shortcut keys for turning input method on or off</long>
++ </locale>
++ </schema>
++ <schema>
++ <key>/schemas/desktop/ibus/general/hotkey/trigger_accel</key>
++ <applyto>/desktop/ibus/general/hotkey/trigger_accel</applyto>
+ <owner>ibus</owner>
+ <type>list</type>
+ <list_type>string</list_type>
+ <default>[<Control>space]</default>
+ <locale name="C">
+ <short>Trigger shortcut keys for gtk_accelerator_parse</short>
-+ <long>The shortcut keys for turning input method on or off</long>
-+ </locale>
-+ </schema>
-+ <schema>
- <key>/schemas/desktop/ibus/general/hotkey/enable_unconditional</key>
- <applyto>/desktop/ibus/general/hotkey/enable_unconditional</applyto>
- <owner>ibus</owner>
++ <long>The shortcut keys for turning input method on or off</long>
+ </locale>
+ </schema>
+ <schema>
@@ -203,6 +215,52 @@
</locale>
</schema>
@@ -1405,42 +1409,59 @@ index 8d1424b..0ac7368 100644
if current_lang in keys:
keys.remove(current_lang)
diff --git a/setup/main.py b/setup/main.py
-index 274b25a..e3027a5 100644
+index fdfb33a..9638da0 100644
--- a/setup/main.py
+++ b/setup/main.py
-@@ -182,12 +182,25 @@ class Setup(object):
- self.__checkbutton_use_global_engine_toggled_cb)
+@@ -183,14 +183,25 @@ class Setup(object):
# init engine page
-- self.__engines = self.__bus.list_engines()
-+ self.__engines = []
+ self.__engines = self.__bus.list_engines()
+ value = self.__config.get_value("general", "load_xkb_layouts")
+ load_layouts = []
+ if value != None:
-+ load_layouts = map(lambda l: str(l), list(value))
++ load_layouts = value.dup_strv()[0]
+ if len(load_layouts) == 0:
-+ self.__engines = self.__bus.list_engines()
++ engines = self.__engines
+ else:
-+ for engine in self.__bus.list_engines():
-+ if not engine.props.name.startswith('xkb:'):
-+ self.__engines.append(engine)
-+ elif engine.props.layout in load_layouts:
-+ self.__engines.append(engine)
++ engines = []
++ for engine in self.__engines:
++ if not engine.get_name().startswith('xkb:'):
++ engines.append(engine)
++ elif engine.get_layout() in load_layouts:
++ engines.append(engine)
+
self.__combobox = self.__builder.get_object("combobox_engines")
- self.__combobox.set_engines(self.__engines)
+- self.__combobox.set_engines(self.__engines)
++ self.__combobox.set_engines(engines)
- tmp_dict = {}
+- tmp_dict = {}
- for e in self.__engines:
-+ for e in self.__bus.list_engines():
- tmp_dict[e.get_name()] = e
+- tmp_dict[e.get_name()] = e
engine_names = values.get("preload_engines", [])
- engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
+- engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
++ engines = self.__get_engine_descs_from_names(engine_names)
+
+ self.__treeview = self.__builder.get_object("treeview_engines")
+ self.__treeview.set_engines(engines)
+@@ -263,6 +274,13 @@ class Setup(object):
+ args.append(path.basename(setup_path))
+ return args
+
++ def __get_engine_descs_from_names(self, engine_names):
++ tmp_dict = {}
++ for e in self.__engines:
++ tmp_dict[e.get_name()] = e
++ engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
++ return engines
++
+ def __treeview_notify_cb(self, treeview, prop):
+ if prop.name not in ("active-engine", "engines"):
+ return
diff --git a/src/Makefile.am b/src/Makefile.am
-index b4d0dcf..1631cae 100644
+index b1d1766..29f0d58 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -190,6 +190,11 @@ typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+@@ -194,6 +194,11 @@ typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
CLEANFILES += $(dist_gir_DATA) $(typelibs_DATA)
endif
@@ -2137,7 +2158,7 @@ index 0000000..661e6fd
@@ -0,0 +1 @@
+Configuration cheader_filename="libgnomekbd/gkbd-configuration.h"
diff --git a/ui/gtk3/Makefile.am b/ui/gtk3/Makefile.am
-index 0fb9d3c..33aaaa3 100644
+index 0fb9d3c..5ccf8b0 100644
--- a/ui/gtk3/Makefile.am
+++ b/ui/gtk3/Makefile.am
@@ -42,6 +42,9 @@ INCLUDES = \
@@ -2161,7 +2182,7 @@ index 0fb9d3c..33aaaa3 100644
-Wno-unused-variable \
-Wno-unused-but-set-variable \
-Wno-unused-function \
-@@ -86,6 +93,7 @@ ibus_ui_gtk3_valas = \
+@@ -86,6 +93,7 @@ ibus_ui_gtk3_SOURCES = \
application.vala \
candidatearea.vala \
candidatepanel.vala \
@@ -2169,15 +2190,15 @@ index 0fb9d3c..33aaaa3 100644
handle.vala \
iconwidget.vala \
keybindingmanager.vala \
-@@ -94,6 +102,7 @@ ibus_ui_gtk3_valas = \
+@@ -94,6 +102,7 @@ ibus_ui_gtk3_SOURCES = \
property.vala \
separator.vala \
switcher.vala \
+ xkblayout.vala \
+ grabkeycode.c \
$(NULL)
- ibus_ui_gtk3_vala_cfiles = $(ibus_ui_gtk3_valas:.vala=.c)
-@@ -106,12 +115,48 @@ ibus_ui_gtk3_LDADD = \
+@@ -101,12 +110,51 @@ ibus_ui_gtk3_LDADD = \
$(AM_LDADD) \
$(NULL)
@@ -2194,9 +2215,11 @@ index 0fb9d3c..33aaaa3 100644
+
+AM_VALAFLAGS += \
+ --vapidir=. \
++ --metadatadir=. \
+ --pkg=glib-2.0 \
+ --pkg=gmodule-2.0 \
+ --pkg=gkbd \
++ --pkg=Xkl-1.0 \
+ $(NULL)
+
+$(srcdir)/gkbd.vapi:
@@ -2216,7 +2239,6 @@ index 0fb9d3c..33aaaa3 100644
+ gkbd.vapi \
+ gkbdlayout.vala \
gtkpanel.xml \
- $(ibus_ui_gtk3_vala_cfiles) \
$(NULL)
EXTRA_DIST = \
@@ -2224,8 +2246,19 @@ index 0fb9d3c..33aaaa3 100644
+ gkbdlayout.vala.false \
+ gkbdlayout.vala.true \
gtkpanel.xml.in.in \
++ Xkl-1.0.metadata \
$(NULL)
+
+diff --git a/ui/gtk3/Xkl-1.0.metadata b/ui/gtk3/Xkl-1.0.metadata
+new file mode 100644
+index 0000000..4961d0c
+--- /dev/null
++++ b/ui/gtk3/Xkl-1.0.metadata
+@@ -0,0 +1,3 @@
++Xkl cheader_filename="libxklavier/xklavier.h"
++Engine
++ .filter_events.evt ref type="X.Event"
diff --git a/ui/gtk3/gkbdlayout.vala.false b/ui/gtk3/gkbdlayout.vala.false
new file mode 100644
index 0000000..a387de9
@@ -2413,7 +2446,7 @@ index 0000000..adacd81
+ */
+}
diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
-index b83d7e3..2a386a0 100644
+index d927491..f8805e0 100644
--- a/ui/gtk3/panel.vala
+++ b/ui/gtk3/panel.vala
@@ -40,8 +40,16 @@ class Panel : IBus.PanelService {
@@ -2515,20 +2548,24 @@ index b83d7e3..2a386a0 100644
+ }
}
- public void set_config(IBus.Config config) {
-@@ -93,8 +152,10 @@ class Panel : IBus.PanelService {
+ private void set_custom_font() {
+@@ -124,12 +183,14 @@ class Panel : IBus.PanelService {
}
m_config = config;
+ set_keybinding();
if (m_config != null) {
m_config.value_changed.connect(config_value_changed_cb);
+ m_config.watch("general", "preload_engines");
+ m_config.watch("general", "engines_order");
+ m_config.watch("panel", "custom_font");
+ m_config.watch("panel", "use_custom_font");
+ init_engines_order();
update_engines(m_config.get_value("general", "preload_engines"),
m_config.get_value("general", "engines_order"));
} else {
-@@ -102,6 +163,192 @@ class Panel : IBus.PanelService {
- }
+@@ -139,6 +200,192 @@ class Panel : IBus.PanelService {
+ set_custom_font();
}
+ private void gkbdlayout_changed_cb() {
@@ -2720,7 +2757,7 @@ index b83d7e3..2a386a0 100644
private void switch_engine(int i, bool force = false) {
GLib.assert(i >= 0 && i < m_engines.length);
-@@ -121,15 +368,7 @@ class Panel : IBus.PanelService {
+@@ -158,15 +405,7 @@ class Panel : IBus.PanelService {
return;
}
// set xkb layout
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index c73cc01..7dc170e 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,91 +1,201 @@
-From 35f6353b89726878fa99de2588fb6be5aef8686c Mon Sep 17 00:00:00 2001
+From fe1ec8a1b6f56ceda1f3f4bbb931cce29d946ed9 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Mon, 5 Mar 2012 11:16:23 +0900
-Subject: [PATCH] Fix python library to load libibus.so.Y
+Date: Fri, 16 Mar 2012 21:00:28 +0900
+Subject: [PATCH] Set the custom font in ui.gtk3.CandidatePanel.
---
- ibus/_config.py.in | 2 ++
- ibus/common.py | 3 ++-
- 2 files changed, 4 insertions(+), 1 deletions(-)
+ ui/gtk3/candidatearea.vala | 23 +++++++++++++++++++++++
+ ui/gtk3/candidatepanel.vala | 19 +++++++++++++++++++
+ ui/gtk3/panel.vala | 41 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 83 insertions(+), 0 deletions(-)
-diff --git a/ibus/_config.py.in b/ibus/_config.py.in
-index 098d805..c9d11bb 100644
---- a/ibus/_config.py.in
-+++ b/ibus/_config.py.in
-@@ -25,6 +25,7 @@ __all__ = (
- "get_copyright",
- "get_license",
- "get_ICON_KEYBOARD",
-+ "LIBIBUS_SONAME",
- "ISOCODES_PREFIX",
- "_"
- )
-@@ -55,4 +56,5 @@ def get_ICON_KEYBOARD():
- return fallback_icon
- return icon
+diff --git a/ui/gtk3/candidatearea.vala b/ui/gtk3/candidatearea.vala
+index 85a830d..5d0e8f7 100644
+--- a/ui/gtk3/candidatearea.vala
++++ b/ui/gtk3/candidatearea.vala
+@@ -33,6 +33,7 @@ class CandidateArea : Gtk.Box {
+ private IBus.Text[] m_ibus_candidates;
+ private uint m_focus_candidate;
+ private bool m_show_cursor;
++ private Pango.FontDescription m_font_desc;
-+LIBIBUS_SONAME='libibus- at IBUS_API_VERSION@.so. at LT_CURRENT_MINUS_AGE@'
- ISOCODES_PREFIX='@ISOCODES_PREFIX@'
-diff --git a/ibus/common.py b/ibus/common.py
-index 6483aae..fb39d56 100644
---- a/ibus/common.py
-+++ b/ibus/common.py
-@@ -59,6 +59,7 @@ import os
- import sys
- from xdg import BaseDirectory
- import ctypes
-+import _config
+ private const string LABELS[] = {
+ "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.",
+@@ -240,6 +241,28 @@ class CandidateArea : Gtk.Box {
+ hbox.pack_start(prev_button, false, false, 0);
+ hbox.pack_start(next_button, false, false, 0);
+ }
++
++ udpate_label_font ();
++ }
++
++ private void udpate_label_font () {
++ for (int i = 0; i < m_labels.length; i++) {
++ m_labels[i].override_font(m_font_desc);
++ }
++
++ for (int i = 0; i < m_candidates.length; i++) {
++ m_candidates[i].override_font(m_font_desc);
++ }
++ }
++
++ public void set_custom_font(string? font_name) {
++ if (font_name == null) {
++ m_font_desc = null;
++ } else {
++ m_font_desc = Pango.FontDescription.from_string (font_name);
++ }
++
++ udpate_label_font ();
+ }
+ }
+
+diff --git a/ui/gtk3/candidatepanel.vala b/ui/gtk3/candidatepanel.vala
+index a029e8f..721db18 100644
+--- a/ui/gtk3/candidatepanel.vala
++++ b/ui/gtk3/candidatepanel.vala
+@@ -32,6 +32,7 @@ public class CandidatePanel : Gtk.HBox{
+ private Gtk.Label m_aux_label;
+ private CandidateArea m_candidate_area;
+ private HSeparator m_hseparator;
++ private Pango.FontDescription m_font_desc;
+
+ private Gdk.Rectangle m_cursor_location;
+
+@@ -268,4 +269,22 @@ public class CandidatePanel : Gtk.HBox{
+
+ move(x, y);
+ }
++
++ public void set_custom_font(string? font_name) {
++ if (font_name == null) {
++ m_font_desc = null;
++ } else {
++ m_font_desc = Pango.FontDescription.from_string (font_name);
++ }
++
++ if (m_preedit_label != null) {
++ m_preedit_label.override_font(m_font_desc);
++ }
++
++ if (m_aux_label != null) {
++ m_aux_label.override_font(m_font_desc);
++ }
++
++ m_candidate_area.set_custom_font(font_name);
++ }
+ }
+diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
+index 53789d2..d927491 100644
+--- a/ui/gtk3/panel.vala
++++ b/ui/gtk3/panel.vala
+@@ -86,6 +86,36 @@ class Panel : IBus.PanelService {
+ keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_BACKWARD);
+ }
- # __display = os.environ["DISPLAY"]
- # __hostname, __display_screen = __display.split(":", 1)
-@@ -104,7 +105,7 @@ import ctypes
- # return None
- # return address
++ private void set_custom_font() {
++ bool use_custom_font = false;
++ GLib.Variant var_use_custom_font = m_config.get_value("panel",
++ "use_custom_font");
++
++ if (var_use_custom_font != null) {
++ use_custom_font = var_use_custom_font.get_boolean();
++ }
++
++ if (use_custom_font == false) {
++ m_candidate_panel.set_custom_font(null);
++ return;
++ }
++
++ string font_name = null;
++ GLib.Variant var_custom_font = m_config.get_value("panel",
++ "custom_font");
++ if (var_custom_font != null) {
++ font_name = var_custom_font.dup_string();
++ }
++
++ if (font_name == null) {
++ GLib.Value value = GLib.Value(typeof(string));
++ Gtk.Settings.get_default().get_property("gtk-font-name", ref value);
++ font_name = value.dup_string();
++ }
++
++ m_candidate_panel.set_custom_font(font_name);
++ }
++
+ public void set_config(IBus.Config config) {
+ if (m_config != null) {
+ m_config.value_changed.disconnect(config_value_changed_cb);
+@@ -98,11 +128,15 @@ class Panel : IBus.PanelService {
+ m_config.value_changed.connect(config_value_changed_cb);
+ m_config.watch("general", "preload_engines");
+ m_config.watch("general", "engines_order");
++ m_config.watch("panel", "custom_font");
++ m_config.watch("panel", "use_custom_font");
+ update_engines(m_config.get_value("general", "preload_engines"),
+ m_config.get_value("general", "engines_order"));
+ } else {
+ update_engines(null, null);
+ }
++
++ set_custom_font();
+ }
--libibus = ctypes.CDLL("libibus-1.0.so.0")
-+libibus = ctypes.CDLL(_config.LIBIBUS_SONAME)
- get_address = libibus.ibus_get_address
- get_address.restype=ctypes.c_char_p
+ private void switch_engine(int i, bool force = false) {
+@@ -150,6 +184,13 @@ class Panel : IBus.PanelService {
+ Variant variant) {
+ if (section == "general" && name == "preload_engines") {
+ update_engines(variant, null);
++ return;
++ }
++
++ if (section == "panel" && (name == "custom_font" ||
++ name == "use_custom_font")) {
++ set_custom_font();
++ return;
+ }
+ }
--
1.7.9.1
-From 401f881314abce57a0979aa4ef08fc5462dfe3ca Mon Sep 17 00:00:00 2001
+From 2ce9e82bd492d6addbd629955f9c0399753e8fa2 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Sat, 10 Mar 2012 09:45:07 +0900
-Subject: [PATCH] Fix to ungrab ui/gtk3/switcher for GTK 3.3.18 and GLib
- 2.31.20
+Date: Sun, 18 Mar 2012 18:14:06 +0900
+Subject: [PATCH] Show language id on ibus-ui-gtk3.switcher window.
---
- ui/gtk3/switcher.vala | 8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
+ ui/gtk3/switcher.vala | 15 ++++++++++++++-
+ 1 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala
-index 76c67ec..131cad5 100644
+index 131cad5..73b58d2 100644
--- a/ui/gtk3/switcher.vala
+++ b/ui/gtk3/switcher.vala
-@@ -127,6 +127,9 @@ class Switcher : Gtk.Window {
- m_loop.run();
- m_loop = null;
-
-+ keyboard.ungrab(Gdk.CURRENT_TIME);
-+ pointer.ungrab(Gdk.CURRENT_TIME);
-+
- hide();
- // Make sure the switcher is hidden before returning from this function.
- while (Gtk.events_pending())
-@@ -239,6 +242,11 @@ class Switcher : Gtk.Window {
- return true;
- }
-
-+ // if e.type == Gdk.EventType.KEY_RELEASE, m_loop is already null.
-+ if (m_loop == null) {
-+ return false;
-+ }
+@@ -155,9 +155,22 @@ class Switcher : Gtk.Window {
+ for (int i = 0; i < m_engines.length; i++) {
+ var index = i;
+ var engine = m_engines[i];
+- var button = new Gtk.Button.with_label(engine.get_longname());
++ var longname = engine.get_longname();
++ var language = engine.get_language();
++ var symbol = engine.get_symbol();
++ var id = language;
+
- m_loop.quit();
- m_result = (int)m_selected_engine;
- return true;
++ if (id.length > 2) {
++ id = id[0:2];
++ }
++ if (symbol.length != 0) {
++ id = symbol;
++ }
++ var label = "%-15s %s".printf(longname, id);
++ var button = new Gtk.Button.with_label(label);
+ button.set_image(new IconWidget(engine.get_icon(), width));
+ button.set_relief(Gtk.ReliefStyle.NONE);
++ button.set_alignment(1.0f, 0.0f);
+ button.show();
+
+ button.enter_notify_event.connect((e) => {
--
1.7.9.1
diff --git a/ibus-xx-no-use.diff b/ibus-xx-no-use.diff
new file mode 100644
index 0000000..2220490
--- /dev/null
+++ b/ibus-xx-no-use.diff
@@ -0,0 +1,221 @@
+--- ibus-1.4.99.20120317/setup/main.py.orig 2012-03-16 14:58:17.228279261 +0900
++++ ibus-1.4.99.20120317/setup/main.py 2012-03-16 14:58:50.316202253 +0900
+@@ -75,22 +75,30 @@ class Setup(object):
+ self.__init_ui()
+
+ def __init_hotkey(self):
++ '''
+ default_values = {
+ "trigger" : (N_("trigger"), ["Control+space"]),
+ "enable_unconditional" : (N_("enable"), []),
+ "disable_unconditional" : (N_("disable"), [])
+ }
++ '''
++ default_values = {
++ 'trigger_accel' : ('trigger', ['<Control>space']),
++ }
+
+ values = dict(self.__config.get_values("general/hotkey"))
+
+- for name, (label, shortcuts) in default_values.items():
++ for name, (id, shortcuts) in default_values.items():
+ shortcuts = values.get(name, shortcuts)
+- button = self.__builder.get_object("button_%s" % name)
+- entry = self.__builder.get_object("entry_%s" % name)
++ button = self.__builder.get_object("button_%s" % id)
++ entry = self.__builder.get_object("entry_%s" % id)
+ entry.set_text("; ".join(shortcuts))
+- entry.set_tooltip_text("\n".join(shortcuts))
+- button.connect("clicked", self.__shortcut_button_clicked_cb,
+- label, "general/hotkey", name, entry)
++ text = '\n'.join(shortcuts)
++ text = "Use ';' separated values\n" + text
++ entry.set_tooltip_text(text)
++ button.connect("clicked", self.__shortcut_button_clicked_cb2,
++ name, "general/hotkey", id, entry)
++ button.set_tooltip_text("Save the left entry string")
+
+ def __init_panel(self):
+ values = dict(self.__config.get_values("panel"))
+@@ -446,6 +454,37 @@ class Setup(object):
+ entry.set_text(text)
+ entry.set_tooltip_text(text)
+
++ def __shortcut_button_clicked_cb2(self, button, name, section, id, entry):
++ text = entry.get_text()
++ if text:
++ text = text.replace(' ', '')
++ shortcuts = text.split(';')
++ else:
++ shortcuts = []
++ orig_list =['<Control>space']
++ variant = self.__config.get_value(section, name)
++ if variant != None:
++ orig_list = variant.dup_strv()[0]
++ orig_text = ';'.join(orig_list)
++ if text == orig_text:
++ return
++ is_valid = True
++ for shortcut in shortcuts:
++ (key, mods) = Gtk.accelerator_parse(shortcut)
++ if not Gtk.accelerator_valid(key, mods):
++ is_valid = False
++ dlg = Gtk.MessageDialog(type = Gtk.MessageType.ERROR,
++ buttons = Gtk.ButtonsType.CLOSE,
++ message_format = "Invalid key %s" % shortcut)
++ dlg.run()
++ dlg.destroy()
++ break
++ if not is_valid:
++ return
++ self.__config.set_value(section, name, GLib.Variant.new_strv(shortcuts))
++ text = '\n'.join(shortcuts)
++ text = "Use ';' separated values\n" + text
++ entry.set_tooltip_text(text)
+
+ def __item_started_column_toggled_cb(self, cell, path_str, model):
+
+--- ibus-1.4.99.20120317/setup/setup.ui.orig 2012-03-16 14:58:23.948466373 +0900
++++ ibus-1.4.99.20120317/setup/setup.ui 2012-03-16 14:59:22.242094469 +0900
+@@ -102,7 +102,7 @@
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label8">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="tooltip_text" translatable="yes">The shortcut keys for switching to next input method in the list</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Next input method:</property>
+@@ -116,7 +116,7 @@
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="sensitive">False</property>
+ <property name="tooltip_text" translatable="yes">The shortcut keys for switching to previous input method in the list</property>
+ <property name="xalign">0</property>
+@@ -137,7 +137,7 @@
+ <object class="GtkEntry" id="entry_trigger">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+- <property name="editable">False</property>
++ <!-- property name="editable">False</property -->
+ </object>
+ <packing>
+ <property name="position">0</property>
+@@ -145,7 +145,9 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="button_trigger">
+- <property name="label" translatable="yes">...</property>
++ <!-- property name="label" translatable="yes">...</property -->
++ <property name="label">gtk-apply</property>
++ <property name="use_stock">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+@@ -160,11 +162,12 @@
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
++ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox5">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="entry_next_engine">
+@@ -199,7 +202,7 @@
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox6">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="entry_prev_engine">
+@@ -248,7 +251,7 @@
+ </child>
+ <child>
+ <object class="GtkLabel" id="label18">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Enable:</property>
+ </object>
+@@ -261,7 +264,7 @@
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="entry_enable_unconditional">
+@@ -296,7 +299,7 @@
+ </child>
+ <child>
+ <object class="GtkLabel" id="label19">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Disable:</property>
+ </object>
+@@ -309,7 +312,7 @@
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="entry_disable_unconditional">
+@@ -406,7 +409,7 @@
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="tooltip_text" translatable="yes">Set the behavior of ibus how to show or hide language bar</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Show language panel:</property>
+@@ -433,7 +436,7 @@
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox_panel_show">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="model">model_panel_show_mode</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer2"/>
+@@ -470,7 +473,7 @@
+ <child>
+ <object class="GtkCheckButton" id="checkbutton_show_icon_on_systray">
+ <property name="label" translatable="yes">Show icon on system tray</property>
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Show icon on system tray</property>
+@@ -486,7 +489,7 @@
+ <child>
+ <object class="GtkCheckButton" id="checkbutton_show_im_name">
+ <property name="label" translatable="yes">Show input method name on language bar</property>
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Show input method's name on language bar when check the checkbox</property>
+@@ -893,7 +896,7 @@ You may use up/down buttons to change it
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame5">
+- <property name="visible">True</property>
++ <property name="no_show_all">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
diff --git a/ibus-xx-setup-frequent-lang.patch b/ibus-xx-setup-frequent-lang.patch
index d487c37..341ea66 100644
--- a/ibus-xx-setup-frequent-lang.patch
+++ b/ibus-xx-setup-frequent-lang.patch
@@ -1,6 +1,6 @@
-From fc525080c668267339baef480f53bdb8256f3239 Mon Sep 17 00:00:00 2001
+From cad2c8af84966ab88822c834bd5547067307b35d Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Sun, 4 Mar 2012 20:18:30 +0900
+Date: Fri, 16 Mar 2012 20:48:10 +0900
Subject: [PATCH] Enable ibus-setup to show the frequently used languages
only in IME list.
@@ -11,10 +11,10 @@ Subject: [PATCH] Enable ibus-setup to show the frequently used languages
3 files changed, 300 insertions(+), 25 deletions(-)
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
-index 3ca0fbc..a3a9a5f 100644
+index 8ca33ac..7420a35 100644
--- a/data/ibus.schemas.in
+++ b/data/ibus.schemas.in
-@@ -272,6 +272,174 @@ se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn
+@@ -296,6 +296,174 @@ se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn
</locale>
</schema>
<schema>
@@ -190,7 +190,7 @@ index 3ca0fbc..a3a9a5f 100644
<applyto>/desktop/ibus/panel/custom_font</applyto>
<owner>ibus</owner>
diff --git a/setup/enginecombobox.py b/setup/enginecombobox.py
-index 0ac7368..9af2651 100644
+index 0ac7368..578098c 100644
--- a/setup/enginecombobox.py
+++ b/setup/enginecombobox.py
@@ -45,6 +45,9 @@ class EngineComboBox(Gtk.ComboBox):
@@ -347,9 +347,9 @@ index 0ac7368..9af2651 100644
+ renderer.set_property("pixbuf", None)
+ elif engine < 0:
+ if not self.__show_sub_lang:
-+ pixbuf = load_icon("list-add", Gtk.IconSize.LARGE_TOOLBAR)
++ pixbuf = load_icon("go-bottom", Gtk.IconSize.LARGE_TOOLBAR)
+ else:
-+ pixbuf = load_icon("list-remove", Gtk.IconSize.LARGE_TOOLBAR)
++ pixbuf = load_icon("go-up", Gtk.IconSize.LARGE_TOOLBAR)
+ if pixbuf == None:
+ pixbuf = load_icon(Gtk.STOCK_MISSING_IMAGE,
+ Gtk.IconSize.LARGE_TOOLBAR)
@@ -412,17 +412,17 @@ index 0ac7368..9af2651 100644
return self.get_property("active-engine")
diff --git a/setup/main.py b/setup/main.py
-index e3027a5..614737f 100644
+index 132e9f4..367cea8 100644
--- a/setup/main.py
+++ b/setup/main.py
-@@ -197,6 +197,7 @@ class Setup(object):
- self.__engines.append(engine)
+@@ -212,6 +212,7 @@ class Setup(object):
+ engines.append(engine)
self.__combobox = self.__builder.get_object("combobox_engines")
+ self.__combobox.set_config(self.__config)
- self.__combobox.set_engines(self.__engines)
+ self.__combobox.set_engines(engines)
- tmp_dict = {}
+ engine_names = values.get("preload_engines", [])
--
1.7.9.1
diff --git a/ibus.spec b/ibus.spec
index 96562f9..c3ec443 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -2,21 +2,19 @@
%{!?gtk2_binary_version: %define gtk2_binary_version %(pkg-config --variable=gtk_binary_version gtk+-2.0)}
%{!?gtk3_binary_version: %define gtk3_binary_version %(pkg-config --variable=gtk_binary_version gtk+-3.0)}
-%define have_libxkbfile 1
-%define have_dconf 1
-%define have_pygobject2 1
-%define have_pygobject3 1
-
-%define vala_build_failure 1
+%define with_xkbfile 1
+%define with_dconf 1
+%define with_pygobject2 1
+%define with_pygobject3 1
%ifarch ppc ppc64 s390 s390x
-%define have_gjsfile 0
+%define with_gjs 0
%else
-%define have_gjsfile 1
+%define with_gjs 1
%endif
%if 0%{?fedora} > 16
-%define ibus_gjs_version 3.3.90.20120308
+%define ibus_gjs_version 3.3.90.20120317
%define ibus_gjs_build_failure 1
%else
%define ibus_gjs_version 3.2.1.20111230
@@ -31,8 +29,8 @@
%define gnome_icon_theme_legacy_version 2.91.6
Name: ibus
-Version: 1.4.99.20120304
-Release: 3%{?dist}
+Version: 1.4.99.20120317
+Release: 1%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
Group: System Environment/Libraries
@@ -40,26 +38,18 @@ URL: http://code.google.com/p/ibus/
# Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
Source0: http://fujiwara.fedorapeople.org/ibus/gnome-shell/%{name}-%{version}.tar.gz
Source1: xinput-ibus
-%if %have_gjsfile
Source2: http://fujiwara.fedorapeople.org/ibus/gnome-shell/ibus-gjs-%{ibus_gjs_version}.tar.gz
-%endif
Patch0: ibus-HEAD.patch
Patch1: ibus-541492-xkb.patch
-Patch2: ibus-xx-setup-frequent-lang.patch
-# Patch3: ibus-530711-preload-sys.patch
+Patch2: ibus-530711-preload-sys.patch
+Patch3: ibus-xx-setup-frequent-lang.patch
-# Workaround gnome-shell build failure
-# http://koji.fedoraproject.org/koji/getfile?taskID=3317917&name=root.log
-# Patch91: ibus-gjs-xx-gnome-shell-3.1.4-build-failure.patch
# Workaround to disable preedit on gnome-shell until bug 658420 is fixed.
# https://bugzilla.gnome.org/show_bug.cgi?id=658420
Patch92: ibus-xx-g-s-disable-preedit.patch
Patch93: ibus-771115-property-compatible.patch
-%if %vala_build_failure
-# Xkl-1.0.gir cannot be converted to vapi.
-# https://bugs.freedesktop.org/show_bug.cgi?id=47141
-Patch94: ibus-xx-vapi-build-failure.diff
-%endif
+# Hide no nused properties in f17.
+Patch94: ibus-xx-no-use.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -74,7 +64,7 @@ BuildRequires: dbus-glib-devel
BuildRequires: dbus-python-devel >= %{dbus_python_version}
BuildRequires: desktop-file-utils
BuildRequires: gtk-doc
-%if %have_dconf
+%if %with_dconf
BuildRequires: dconf-devel
BuildRequires: dbus-x11
BuildRequires: vala
@@ -82,12 +72,12 @@ BuildRequires: vala-tools
%endif
# for AM_GCONF_SOURCE_2 in configure.ac
BuildRequires: GConf2-devel
-%if %have_pygobject3
+%if %with_pygobject3
BuildRequires: gobject-introspection-devel
%endif
BuildRequires: intltool
BuildRequires: iso-codes-devel
-%if %have_libxkbfile
+%if %with_xkbfile
BuildRequires: libxkbfile-devel
BuildRequires: libgnomekbd-devel
%endif
@@ -103,10 +93,10 @@ Requires: %{name}-gtk2 = %{version}-%{release}
Requires: %{name}-gtk3 = %{version}-%{release}
%endif
-%if %have_pygobject2
+%if %with_pygobject2
Requires: pygtk2
%endif
-%if %have_pygobject3
+%if %with_pygobject3
Requires: pygobject3
%endif
Requires: pyxdg
@@ -114,7 +104,7 @@ Requires: iso-codes
Requires: dbus-python >= %{dbus_python_version}
Requires: dbus-x11
Requires: im-chooser
-%if %have_dconf
+%if %with_dconf
Requires: dconf
%else
Requires: GConf2
@@ -174,7 +164,7 @@ Requires(post): glib2 >= %{glib_ver}
%description gtk3
This package contains ibus im module for gtk3
-%if %have_gjsfile
+%if %with_gjs
%package gnome3
Summary: IBus gnome-shell-extension for GNOME3
Group: System Environment/Libraries
@@ -211,35 +201,28 @@ The ibus-devel-docs package contains developer documentation for ibus
%prep
%setup -q
-%if %have_gjsfile
+%if %with_gjs
zcat %SOURCE2 | tar xf -
-%if %ibus_gjs_build_failure
-d=`basename %SOURCE2 .tar.gz`
-cd $d
-#%patch91 -p1 -b .fail-g-s
-cd ..
-%endif
%endif
%patch0 -p1
%patch92 -p1 -b .g-s-preedit
cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c ||
-%if %have_libxkbfile
+%if %with_xkbfile
%patch1 -p1 -b .xkb
-%if %vala_build_failure
-%patch94 -p1 -b .vala-fail
-%endif
rm -f bindings/vala/ibus-1.0.vapi
%endif
-%patch2 -p1 -b .setup-frequent-lang
-# %patch3 -p1 -b .preload-sys
+%patch2 -p1 -b .preload-sys
+%patch3 -p1 -b .setup-frequent-lang
%if 0%{?fedora} <= 16
%patch93 -p1 -b .compat
%endif
+%patch94 -p1 -b .no-used
+
%build
-%if %have_libxkbfile
+%if %with_xkbfile
XKB_PRELOAD_LAYOUTS=\
"us,us(chr),us(dvorak),ad,al,am,ara,az,ba,bd,be,bg,br,bt,by,"\
"de,dk,ca,ch,cn(tib),cz,ee,epo,es,et,fi,fo,fr,"\
@@ -261,41 +244,33 @@ autoreconf -f -i
--enable-gtk-doc \
--with-no-snooper-apps='gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*' \
--enable-surrounding-text \
-%if %have_libxkbfile
+%if %with_xkbfile
--with-xkb-preload-layouts=$XKB_PRELOAD_LAYOUTS \
--enable-xkb \
--enable-libgnomekbd \
%endif
-%if %have_dconf
+%if %with_dconf
--enable-dconf \
--disable-gconf \
%endif
-%if %have_pygobject2
+%if %with_pygobject2
--enable-python-library \
%endif
--enable-introspection
-%if %vala_build_failure
-touch ui/gtk3/ibus_ui_gtk3_vala.stamp
-touch ui/gtk3/*.c
-cp ui/gtk3/gkbdlayout.c.true ui/gtk3/gkbdlayout.c
+%if %with_xkbfile
+make -C ui/gtk3 maintainer-clean-generic
%endif
-
# make -C po update-gmo
-make %{?_smp_mflags} \
- AM_DEFAULT_VERBOSITY=1 \
- PKG_CONFIG_PATH=..:/usr/lib64/pkgconfig:/usr/lib/pkgconfig
+make %{?_smp_mflags}
-%if %have_gjsfile
+%if %with_gjs
d=`basename %SOURCE2 .tar.gz`
cd $d
-%if %ibus_gjs_build_failure
-autoreconf
-%endif
export PKG_CONFIG_PATH=..:/usr/lib64/pkgconfig:/usr/lib/pkgconfig
%configure \
- --with-gnome-shell-version="3.3.90,3.3.5,3.3.4,3.3.3,3.2" \
- --with-gjs-version="1.31.20,1.31.10,1.31.6,1.31.11,1.30"
+ --with-gnome-shell-version="3.4,3.3.90,3.3.5,3.3.4,3.3.3,3.2" \
+ --with-gjs-version="1.32,1.31.20,1.31.10,1.31.6,1.31.11,1.30"
make %{?_smp_mflags}
cd ..
%endif
@@ -329,7 +304,7 @@ desktop-file-install --delete-original \
--dir $RPM_BUILD_ROOT%{_datadir}/applications \
$RPM_BUILD_ROOT%{_datadir}/applications/*
-%if %have_gjsfile
+%if %with_gjs
# https://bugzilla.redhat.com/show_bug.cgi?id=657165
d=`basename %SOURCE2 .tar.gz`
cd $d
@@ -352,13 +327,13 @@ touch --no-create %{_datadir}/icons/hicolor || :
%{_sbindir}/alternatives --install %{_sysconfdir}/X11/xinit/xinputrc xinputrc %{_xinputconf} 83 || :
-%if !%have_dconf
+%if !%with_dconf
export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
gconftool-2 --makefile-install-rule %{_sysconfdir}/gconf/schemas/ibus.schemas > /dev/null 2>&1 || :
%endif
%pre
-%if !%have_dconf
+%if !%with_dconf
if [ "$1" -gt 1 ]; then
export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/ibus.schemas > /dev/null 2>&1 || :
@@ -366,7 +341,7 @@ fi
%endif
%preun
-%if !%have_dconf
+%if !%with_dconf
if [ "$1" -eq 0 ]; then
export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/ibus.schemas > /dev/null 2>&1 || :
@@ -384,14 +359,14 @@ if [ "$1" = "0" ]; then
# if alternative was set to manual, reset to auto
[ -L %{_sysconfdir}/alternatives/xinputrc -a "`readlink %{_sysconfdir}/alternatives/xinputrc`" = "%{_xinputconf}" ] && %{_sbindir}/alternatives --auto xinputrc || :
fi
-%if %have_dconf
+%if %with_dconf
if [ $1 -eq 0 ]; then
glib-compile-schemas %{_datadir}/glib-2.0/schemas
fi
%endif
%posttrans
-%if %have_dconf
+%if %with_dconf
if [ $1 -eq 0 ]; then
glib-compile-schemas %{_datadir}/glib-2.0/schemas
fi
@@ -417,7 +392,7 @@ fi
%files -f %{name}10.lang
%defattr(-,root,root,-)
%doc AUTHORS COPYING README
-%if %have_pygobject2
+%if %with_pygobject2
%dir %{python_sitelib}/ibus
%{python_sitelib}/ibus/*
%endif
@@ -425,12 +400,12 @@ fi
%{_bindir}/ibus
%{_bindir}/ibus-daemon
%{_bindir}/ibus-setup
-%if %have_pygobject3
+%if %with_pygobject3
%{_datadir}/ibus/*
%endif
%{_datadir}/applications/*
%{_datadir}/icons/hicolor/*/apps/*
-%if %have_dconf
+%if %with_dconf
%{_datadir}/GConf/gsettings/*
%{_datadir}/glib-2.0/schemas/*.xml
%{_libexecdir}/ibus-engine-simple
@@ -442,21 +417,21 @@ fi
%{_libexecdir}/ibus-x11
# %{_sysconfdir}/xdg/autostart/ibus.desktop
%{_sysconfdir}/bash_completion.d/ibus.bash
-%if %have_dconf
+%if %with_dconf
%{_sysconfdir}/dconf/db/ibus
%{_sysconfdir}/dconf/profile/ibus
%else
%{_sysconfdir}/gconf/schemas/ibus.schemas
%endif
%config %{_xinputconf}
-%if %have_libxkbfile
+%if %with_xkbfile
%{_libexecdir}/ibus-xkb
%endif
%files libs
%defattr(-,root,root,-)
%{_libdir}/libibus-%{ibus_api_version}.so.*
-%if %have_pygobject3
+%if %with_pygobject3
%{_libdir}/girepository-1.0/IBus-1.0.typelib
%endif
@@ -468,7 +443,7 @@ fi
%defattr(-,root,root,-)
%{_libdir}/gtk-3.0/%{gtk3_binary_version}/immodules/im-ibus.so
-%if %have_gjsfile
+%if %with_gjs
%files gnome3
%defattr(-,root,root,-)
%{_datadir}/gnome-shell/js/ui/status/ibus
@@ -489,6 +464,19 @@ fi
%{_datadir}/gtk-doc/html/*
%changelog
+* Sat Mar 17 2012 Takao Fujiwara <tfujiwar at redhat.com> - 1.4.99.20120317-1
+- Bumped to 1.4.99.20120317
+ Fixed Bug 718668 - focus move is slow with ibus-gnome3
+ Fixed Bug 749497 - Enhance IME descriptions in status icon active menu
+- Bumped to ibus-gjs 3.3.90.20120317
+- Added ibus-xx-no-use.diff
+ Fixed Bug 803260 - Disable non-global input method mode
+- Updated ibus-HEAD.patch
+ Fixed Bug 803250 - ibus lookup window font customization
+ Fixed Bug 803177 - language id on ibus-ui-gtk3 switcher
+- Update ibus-530711-preload-sys.patch
+ Fixed Bug 797023 - port preload engines
+
* Thu Mar 08 2012 Takao Fujiwara <tfujiwar at redhat.com> - 1.4.99.20120303-3
- Bumped to ibus-gjs 3.3.90.20120308 to work with gnome-shell 3.3.90
- Fixed Bug 786906 - Added ifnarch ppc ppc64 s390 s390x
diff --git a/sources b/sources
index 147eb6b..ec6d57d 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-28c77ed889dbe25525fde12e58f1402b ibus-1.4.99.20120304.tar.gz
-11274193093c9d729187bdcea6e85442 ibus-gjs-3.3.90.20120308.tar.gz
+3517bf2fff8a1d9bfb55e10674d79859 ibus-1.4.99.20120317.tar.gz
+9810fabca2c4c1080da91f82a2ec7684 ibus-gjs-3.3.90.20120317.tar.gz
2d2ad58e3e41429dbd883ba7e501c9b2 ibus-gjs-3.2.1.20111230.tar.gz
More information about the scm-commits
mailing list