From 19c65a75428342fe4072e034363020a20489c878 Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Sun, 18 Mar 2012 18:41:41 +0900 Subject: [PATCH] Bumped to 1.4.99.20120317 --- .gitignore | 2 + ibus-530711-preload-sys.patch | 839 +++++++++--------------------- ibus-541492-xkb.patch | 141 +++-- ibus-HEAD.patch | 270 +++++++--- ibus-xx-no-use.diff | 221 ++++++++ ibus-xx-setup-frequent-lang.patch | 24 +- ibus.spec | 136 +++-- sources | 4 +- 8 files changed, 817 insertions(+), 820 deletions(-) create mode 100644 ibus-xx-no-use.diff 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 -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 @@ - /desktop/ibus/general/preload_engines - ibus - list -- [] -+ [ibus_null_engine] - string - - Preload engines -@@ -14,6 +14,19 @@ - - +@@ -2,6 +2,30 @@ + + + /schemas/desktop/ibus/general/preload_engine_mode + /desktop/ibus/general/preload_engine_mode @@ -526,125 +39,80 @@ index e0a6a37..2418c95 100644 + 0 + + Preload engine mode -+ Preload engines are loaded with this mode. -+ 0 = user customized engines. -+ 1 = language related engines. ++ Preload engines are loaded with this mode. ++ 0 = user customized engines. ++ 1 = language related engines. + + + - /schemas/desktop/ibus/general/hotkey/trigger - /desktop/ibus/general/hotkey/trigger ++ /schemas/desktop/ibus/general/preload_engines_inited ++ /desktop/ibus/general/preload_engines_inited ++ ibus ++ bool ++ false ++ ++ The key preload_engines is initialized ++ The key preload_engines is initialized ++ ++ ++ + /schemas/desktop/ibus/general/preload_engines + /desktop/ibus/general/preload_engines ibus -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 @@ True vertical @@ -710,7 +187,7 @@ index 57cb597..b2ceef2 100644 True -@@ -749,7 +764,7 @@ +@@ -752,7 +767,7 @@ @@ -719,7 +196,7 @@ index 57cb597..b2ceef2 100644 -@@ -788,7 +803,7 @@ You may use up/down buttons to change it.</i></small> +@@ -791,7 +806,7 @@ You may use up/down buttons to change it.</i></small> False @@ -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 engines = m_bus.list_engines(); ++ string[] im_engines = {}; ++ ++ for (unowned GLib.List 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 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 -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 @@ - - - -+ /schemas/desktop/ibus/general/hotkey/trigger-accel -+ /desktop/ibus/general/hotkey/trigger-accel +@@ -34,7 +34,19 @@ + [Control+space,Zenkaku_Hankaku,Alt+Kanji,Alt+grave,Hangul,Alt+Release+Alt_R] + + Trigger shortcut keys +- The shortcut keys for turning input method on or off ++ The shortcut keys for turning input method on or off ++ ++ ++ ++ /schemas/desktop/ibus/general/hotkey/trigger_accel ++ /desktop/ibus/general/hotkey/trigger_accel + ibus + list + string + [<Control>space] + + Trigger shortcut keys for gtk_accelerator_parse -+ The shortcut keys for turning input method on or off -+ -+ -+ - /schemas/desktop/ibus/general/hotkey/enable_unconditional - /desktop/ibus/general/hotkey/enable_unconditional - ibus ++ The shortcut keys for turning input method on or off + + + @@ -203,6 +215,52 @@ @@ -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 -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-@IBUS_API_VERSION@.so.@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 - - # __display = os.environ["DISPLAY"] - # __hostname, __display_screen = __display.split(":", 1) -@@ -104,7 +105,7 @@ import ctypes - # return None - # return address - --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 - --- -1.7.9.1 - -From 401f881314abce57a0979aa4ef08fc5462dfe3ca Mon Sep 17 00:00:00 2001 -From: fujiwarat -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 - ---- - ui/gtk3/switcher.vala | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala -index 76c67ec..131cad5 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; + 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); } - -+ // if e.type == Gdk.EventType.KEY_RELEASE, m_loop is already null. -+ if (m_loop == null) { -+ return false; ++ ++ 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); + } + - m_loop.quit(); - m_result = (int)m_selected_engine; - return true; ++ 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); + } + ++ 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(); + } + + 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 2ce9e82bd492d6addbd629955f9c0399753e8fa2 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Sun, 18 Mar 2012 18:14:06 +0900 +Subject: [PATCH] Show language id on ibus-ui-gtk3.switcher window. + +--- + 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 131cad5..73b58d2 100644 +--- a/ui/gtk3/switcher.vala ++++ b/ui/gtk3/switcher.vala +@@ -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; ++ ++ 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', ['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 =['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 @@ + 6 + + +- True ++ True + The shortcut keys for switching to next input method in the list + 0 + Next input method: +@@ -116,7 +116,7 @@ + + + +- True ++ True + False + The shortcut keys for switching to previous input method in the list + 0 +@@ -137,7 +137,7 @@ + + True + True +- False ++ + + + 0 +@@ -145,7 +145,9 @@ + + + +- ... ++ ++ gtk-apply ++ True + True + True + False +@@ -160,11 +162,12 @@ + + 1 + 2 ++ GTK_FILL + + + + +- True ++ True + 6 + + +@@ -199,7 +202,7 @@ + + + +- True ++ True + 6 + + +@@ -248,7 +251,7 @@ + + + +- True ++ True + 0 + Enable: + +@@ -261,7 +264,7 @@ + + + +- True ++ True + 6 + + +@@ -296,7 +299,7 @@ + + + +- True ++ True + 0 + Disable: + +@@ -309,7 +312,7 @@ + + + +- True ++ True + 6 + + +@@ -406,7 +409,7 @@ + + + +- True ++ True + Set the behavior of ibus how to show or hide language bar + 0 + Show language panel: +@@ -433,7 +436,7 @@ + + + +- True ++ True + model_panel_show_mode + + +@@ -470,7 +473,7 @@ + + + Show icon on system tray +- True ++ True + True + False + Show icon on system tray +@@ -486,7 +489,7 @@ + + + Show input method name on language bar +- True ++ True + True + False + Show input method's name on language bar when check the checkbox +@@ -893,7 +896,7 @@ You may use up/down buttons to change it + + + +- True ++ True + 0 + none + 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 -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 @@ -190,7 +190,7 @@ index 3ca0fbc..a3a9a5f 100644 /desktop/ibus/panel/custom_font ibus 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 - 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 - 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