diff --git a/ibus-1.5.26.tar.gz b/ibus-1.5.27.tar.gz similarity index 33% rename from ibus-1.5.26.tar.gz rename to ibus-1.5.27.tar.gz index 7c025b340a2d6ac7db971fdab3d71fb70ac0a586..0a782176bdb29114c884e1f2fb5ad973c3fcf691 100644 Binary files a/ibus-1.5.26.tar.gz and b/ibus-1.5.27.tar.gz differ diff --git a/ibus-1385349-segv-bus-proxy.patch b/ibus-1385349-segv-bus-proxy.patch index 91ca4a781c7fd9c90c3ae147c7cee36901fc06f6..0f8006dc279650576c10bc9f5ce65d05b0f5d258 100644 --- a/ibus-1385349-segv-bus-proxy.patch +++ b/ibus-1385349-segv-bus-proxy.patch @@ -1,6 +1,6 @@ -From 41c325dfb32269c9aadfeedb4df44656aac4d883 Mon Sep 17 00:00:00 2001 +From f6d31621404dc8716bddd0588402fbdde4f5fb73 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Fri, 20 Nov 2020 09:53:54 +0900 +Date: Thu, 3 Nov 2022 08:59:41 +0900 Subject: [PATCH] Fix SEGV in bus_panel_proxy_focus_in() rhbz#1350291 SEGV in BUS_IS_CONNECTION(skip_connection) in @@ -21,7 +21,8 @@ If the mutex is not unlocked, g_mutex_clear() causes assert. rhbz#1767691 SEGV in client/x11/main.c:_sighandler(). Do not call atexit functions in _sighandler(). -rhbz#1795499 SEGV in ibus_bus_get_bus_address() because of no _bus->priv. +rhbz#1795499 rhbz#1936777 SEGV in ibus_bus_get_bus_address() because of +no _bus->priv. _changed_cb() should not be called after ibus_bus_destroy() is called. rhbz#1771238 SEGV in assert(m_loop == null) in switcher.vala. @@ -41,12 +42,12 @@ BUG=rhbz#1767976 BUG=rhbz#1797120 --- bus/dbusimpl.c | 47 ++++++++++++++++++++++++--- - bus/engineproxy.c | 51 ++++++++++++++++++++++------- + bus/engineproxy.c | 44 +++++++++++++++++++------ client/x11/main.c | 8 ++++- - src/ibusbus.c | 5 +++ + src/ibusbus.c | 6 ++++ ui/gtk3/extension.vala | 4 +++ ui/gtk3/switcher.vala | 73 +++++++++++++++++++++++++----------------- - 6 files changed, 141 insertions(+), 47 deletions(-) + 6 files changed, 137 insertions(+), 45 deletions(-) diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c index 59787a80..af2fbde2 100644 @@ -137,10 +138,10 @@ index 59787a80..af2fbde2 100644 if (incoming) { /* is incoming message */ diff --git a/bus/engineproxy.c b/bus/engineproxy.c -index 2d98995c..bbbe5532 100644 +index fd1f34fb..57c061ba 100644 --- a/bus/engineproxy.c +++ b/bus/engineproxy.c -@@ -660,20 +660,33 @@ bus_engine_proxy_g_signal (GDBusProxy *proxy, +@@ -690,10 +690,12 @@ bus_engine_proxy_g_signal (GDBusProxy *proxy, g_return_if_reached (); } @@ -152,16 +153,14 @@ index 2d98995c..bbbe5532 100644 + GDBusConnection *connection, + GError **error) { -+ GDBusProxyFlags flags; -+ BusEngineProxy *engine; -+ + GDBusProxyFlags flags; + BusEngineProxy *engine; +@@ -704,12 +706,20 @@ bus_engine_proxy_new_internal (const gchar *path, g_assert (path); g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (G_IS_DBUS_CONNECTION (connection)); + g_assert (error && *error == NULL); -- GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; -- BusEngineProxy *engine = + /* rhbz#1601577 engine == NULL if connection is closed. */ + if (g_dbus_connection_is_closed (connection)) { + *error = g_error_new (G_DBUS_ERROR, @@ -169,19 +168,19 @@ index 2d98995c..bbbe5532 100644 + "Connection is closed."); + return NULL; + } -+ flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; -+ engine = - (BusEngineProxy *) g_initable_new (BUS_TYPE_ENGINE_PROXY, - NULL, -- NULL, -+ error, - "desc", desc, - "g-connection", connection, - "g-interface-name", IBUS_INTERFACE_ENGINE, -@@ -681,12 +694,19 @@ bus_engine_proxy_new_internal (const gchar *path, - "g-default-timeout", g_gdbus_timeout, - "g-flags", flags, - NULL); + flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; + engine = (BusEngineProxy *) g_initable_new ( + BUS_TYPE_ENGINE_PROXY, + NULL, +- NULL, ++ error, + "desc", desc, + "g-connection", connection, + "g-interface-name", IBUS_INTERFACE_ENGINE, +@@ -717,6 +727,12 @@ bus_engine_proxy_new_internal (const gchar *path, + "g-default-timeout", g_gdbus_timeout, + "g-flags", flags, + NULL); + /* FIXME: rhbz#1601577 */ + if (!engine) { + /* show abrt local variable */ @@ -191,6 +190,7 @@ index 2d98995c..bbbe5532 100644 const gchar *layout = ibus_engine_desc_get_layout (desc); if (layout != NULL && layout[0] != '\0') { engine->keymap = ibus_keymap_get (layout); +@@ -736,6 +752,7 @@ bus_engine_proxy_new_internal (const gchar *path, } return engine; } @@ -198,7 +198,7 @@ index 2d98995c..bbbe5532 100644 typedef struct { GTask *task; -@@ -748,23 +768,30 @@ create_engine_ready_cb (BusFactoryProxy *factory, +@@ -798,23 +815,30 @@ create_engine_ready_cb (BusFactoryProxy *factory, GAsyncResult *res, EngineProxyNewData *data) { @@ -238,10 +238,10 @@ index 2d98995c..bbbe5532 100644 /* FIXME: set destroy callback ? */ g_task_return_pointer (data->task, engine, NULL); diff --git a/client/x11/main.c b/client/x11/main.c -index c9ee174d..768b91f0 100644 +index 6057cc03..12e9012c 100644 --- a/client/x11/main.c +++ b/client/x11/main.c -@@ -40,6 +40,7 @@ +@@ -45,6 +45,7 @@ #include #include #include @@ -249,7 +249,7 @@ index c9ee174d..768b91f0 100644 #include -@@ -1104,7 +1105,12 @@ _atexit_cb () +@@ -1148,7 +1149,12 @@ _atexit_cb () static void _sighandler (int sig) { @@ -264,10 +264,10 @@ index c9ee174d..768b91f0 100644 static void diff --git a/src/ibusbus.c b/src/ibusbus.c -index b7ffbb47..668c8a26 100644 +index 47400cb8..c9fbe492 100644 --- a/src/ibusbus.c +++ b/src/ibusbus.c -@@ -689,6 +689,11 @@ ibus_bus_destroy (IBusObject *object) +@@ -708,6 +708,12 @@ ibus_bus_destroy (IBusObject *object) _bus = NULL; if (bus->priv->monitor) { @@ -276,6 +276,7 @@ index b7ffbb47..668c8a26 100644 + */ + g_signal_handlers_disconnect_by_func (bus->priv->monitor, + (GCallback) _changed_cb, bus); ++ g_file_monitor_cancel (bus->priv->monitor); g_object_unref (bus->priv->monitor); bus->priv->monitor = NULL; } @@ -295,7 +296,7 @@ index a6f2e8e6..b7a04081 100644 m_panel.load_settings(); } diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala -index a4529c88..29a70dd5 100644 +index 9400e9ba..2ecbdac1 100644 --- a/ui/gtk3/switcher.vala +++ b/ui/gtk3/switcher.vala @@ -140,8 +140,8 @@ class Switcher : Gtk.Window { @@ -307,9 +308,9 @@ index a4529c88..29a70dd5 100644 + assert(m_loop == null); + assert(index < engines.length); - m_is_running = true; - m_keyval = keyval; -@@ -198,16 +198,18 @@ class Switcher : Gtk.Window { + if (m_is_running) + return index; +@@ -200,16 +200,18 @@ class Switcher : Gtk.Window { null, event, null); @@ -337,7 +338,7 @@ index a4529c88..29a70dd5 100644 #else Gdk.Device device = event.get_device(); if (device == null) { -@@ -243,30 +245,41 @@ class Switcher : Gtk.Window { +@@ -245,30 +247,41 @@ class Switcher : Gtk.Window { Gdk.EventMask.KEY_RELEASE_MASK, null, Gdk.CURRENT_TIME); @@ -399,5 +400,5 @@ index a4529c88..29a70dd5 100644 #if VALA_0_34 seat.ungrab(); -- -2.24.1 +2.37.3 diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index c3ef9f99dd60875593a5acb551b3add749a6a661..9f57a0d9ca13d84d863fde14dc0a65751527abc2 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1,513 +1,320 @@ -From 17648f0522910480b6c5dd4f5356ca1f6c160bf5 Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -Date: Tue, 29 Mar 2022 22:48:19 +0200 -Subject: [PATCH] src: Fix refcounting issues +From babad7839ba6d72609c717d647bb2928724b4cc3 Mon Sep 17 00:00:00 2001 +From: Izumi Tsutsui +Date: Tue, 6 Sep 2022 17:08:43 +0900 +Subject: [PATCH] tools: Check libdl for dlclose() properly in configure -Commit 5a455b1ead attempted to fix both GLib warnings around -floating references and other presumed refcounting issues. However -it missed 2 kinds of bugs: - -- The places that take an IBusText created from a static string - were made to avoid freeing it afterwards, but the staticness refers - to the string content, not the object itself. -- The places that are documented to emit signals on floating object - references used to do the following after signal emission: - - if (g_object_is_floating (object)) - g_object_unref (object) - - And did possibly trigger GLib warnings were changed to: +BUG=https://github.com/ibus/ibus/pull/2442 +--- + configure.ac | 4 ++++ + tools/Makefile.am | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) - if (g_object_is_floating (object)) - g_object_sink_ref (object); - g_object_unref (object); +diff --git a/configure.ac b/configure.ac +index 0868d6c9..2344523a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -147,6 +147,10 @@ AC_CHECK_HEADERS([sys/prctl.h]) + # Check functions. + AC_CHECK_FUNCS(daemon) + ++# Check dlclose() in libc.so. ++AC_CHECK_LIB(c, dlclose, LIBDL="", [AC_CHECK_LIB(dl, dlclose, LIBDL="-ldl")]) ++AC_SUBST(LIBDL) ++ + # Check packages. + # Check glib2. + AM_PATH_GLIB_2_0 +diff --git a/tools/Makefile.am b/tools/Makefile.am +index b82395da..e300f9f3 100644 +--- a/tools/Makefile.am ++++ b/tools/Makefile.am +@@ -63,7 +63,7 @@ AM_LDADD = \ + @GTHREAD2_LIBS@ \ + $(libibus) \ + $(libibusimmodule) \ +- -ldl \ ++ $(LIBDL) \ + $(NULL) + + AM_VALAFLAGS = \ +-- +2.37.3 - Which fixes the GLib warning for floating references, but do - unintendedly steal one reference away for non floating references. +From 39b69073ad34ab89a3e5aa012ff740c84f69eb8f Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 16 Sep 2022 14:30:35 +0900 +Subject: [PATCH] client/gtk2: Stop many warnings of surrounding text -This commit is essentially a revert of commit 5a455b1ead, but -addressing both things differently: +Surrounding text is requested by ibus_im_context_filter_keypress() +and the no supported warning could be output many times. +Now the warning is output one time by input context but +brower applicaations do not use GtkWidget for the input context +so the warning is output by instance but not input context. -- All label/tooltip/symbol IBusText properties in IBusProperty do - now always sink the reference of the stored object. +BUG=https://github.com/ibus/ibus/issues/2418 +--- + client/gtk2/ibusimcontext.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) -- All places documented as maybe using objects with a floating reference - on signals changed to doing: +diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c +index bc14df00..3fc9c0f2 100644 +--- a/client/gtk2/ibusimcontext.c ++++ b/client/gtk2/ibusimcontext.c +@@ -567,6 +567,7 @@ _process_key_event (IBusInputContext *context, + static void + _request_surrounding_text (IBusIMContext *context) + { ++ static gboolean warned = FALSE; + if (context && + (context->caps & IBUS_CAP_SURROUNDING_TEXT) != 0 && + context->ibuscontext != NULL && +@@ -580,8 +581,11 @@ _request_surrounding_text (IBusIMContext *context) + * fail with the first typing on firefox but it succeeds with + * the second typing. + */ +- g_warning ("%s has no capability of surrounding-text feature", +- g_get_prgname ()); ++ if (!warned) { ++ g_warning ("%s has no capability of surrounding-text feature", ++ g_get_prgname ()); ++ warned = TRUE; ++ } + } + } + } +-- +2.37.3 - if (g_object_is_floating (object)) { - g_object_ref_sink (object); - g_object_unref (object); - } +From 50f8d8b79bc8eac1bae80116fe669d7314a44663 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 16 Sep 2022 14:34:54 +0900 +Subject: [PATCH] client/gtk2: Update capabilities if "retrieve-surrounding" is + failed - So the floating reference is owned and unreferenced without warnings, - but already owned references are left unchanged. +Some engine developers wish to update the capabilities if emitting +"retrieve-surrounding" signal is failed so that engines disable the +surrounding text feature but I had deleted the logic with #2054 since +the second typing could be succeeded. +Asking all applications the second typing would not be a good condition +and the special issue should be fixed in firefox. -This addresses the possible GLib warnings, fixes the possible double -unrefs happening on IBusText used in signals, and fixes the missing -unrefs on IBusText objects created from static strings. +Fixes: https://github.com/ibus/ibus/commit/7b3b8c8b0c -BUG=https://github.com/ibus/ibus/issues/2393 -BUG=https://github.com/ibus/ibus/issues/2387 +BUG=https://github.com/ibus/ibus/issues/2054 +BUG=https://github.com/ibus/ibus/issues/2354 --- - src/ibusinputcontext.c | 35 +++++++++++++++++++++-------------- - src/ibusproperty.c | 32 +++++++++++++++++--------------- - 2 files changed, 38 insertions(+), 29 deletions(-) + client/gtk2/ibusimcontext.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) -diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c -index 4b27551b..7981de38 100644 ---- a/src/ibusinputcontext.c -+++ b/src/ibusinputcontext.c -@@ -549,9 +549,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - g_variant_unref (variant); - g_signal_emit (context, context_signals[COMMIT_TEXT], 0, text); - -- if (g_object_is_floating (text)) -+ if (g_object_is_floating (text)) { - g_object_ref_sink (text); -- g_object_unref (text); -+ g_object_unref (text); -+ } - return; - } - if (g_strcmp0 (signal_name, "UpdatePreeditText") == 0) { -@@ -569,9 +570,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - cursor_pos, - visible); - -- if (g_object_is_floating (text)) -+ if (g_object_is_floating (text)) { - g_object_ref_sink (text); -- g_object_unref (text); -+ g_object_unref (text); -+ } - return; - } - if (g_strcmp0 (signal_name, "UpdatePreeditTextWithMode") == 0) { -@@ -592,9 +594,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - visible, - mode); - -- if (g_object_is_floating (text)) -+ if (g_object_is_floating (text)) { - g_object_ref_sink (text); -- g_object_unref (text); -+ g_object_unref (text); -+ } - return; - } - -@@ -621,9 +624,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - 0, - text, - visible); -- if (g_object_is_floating (text)) -+ if (g_object_is_floating (text)) { - g_object_ref_sink (text); -- g_object_unref (text); -+ g_object_unref (text); -+ } - return; - } - -@@ -640,9 +644,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - 0, - table, - visible); -- if (g_object_is_floating (table)) -+ if (g_object_is_floating (table)) { - g_object_ref_sink (table); -- g_object_unref (table); -+ g_object_unref (table); -+ } - return; - - } -@@ -659,9 +664,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - 0, - prop_list); - -- if (g_object_is_floating (prop_list)) -+ if (g_object_is_floating (prop_list)) { - g_object_ref_sink (prop_list); -- g_object_unref (prop_list); -+ g_object_unref (prop_list); -+ } - return; - } - -@@ -673,9 +679,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - - g_signal_emit (context, context_signals[UPDATE_PROPERTY], 0, prop); - -- if (g_object_is_floating (prop)) -+ if (g_object_is_floating (prop)) { - g_object_ref_sink (prop); -- g_object_unref (prop); -+ g_object_unref (prop); -+ } - return; - } - -diff --git a/src/ibusproperty.c b/src/ibusproperty.c -index 6d4ed088..cd8a0e2a 100644 ---- a/src/ibusproperty.c -+++ b/src/ibusproperty.c -@@ -336,20 +336,17 @@ ibus_property_destroy (IBusProperty *prop) - prop->priv->icon = NULL; - - if (prop->priv->label) { -- if (!ibus_text_get_is_static (prop->priv->label)) -- g_object_unref (prop->priv->label); -+ g_object_unref (prop->priv->label); - prop->priv->label = NULL; - } - - if (prop->priv->symbol) { -- if (!ibus_text_get_is_static (prop->priv->symbol)) -- g_object_unref (prop->priv->symbol); -+ g_object_unref (prop->priv->symbol); - prop->priv->symbol = NULL; - } - - if (prop->priv->tooltip) { -- if (!ibus_text_get_is_static (prop->priv->tooltip)) -- g_object_unref (prop->priv->tooltip); -+ g_object_unref (prop->priv->tooltip); - prop->priv->tooltip = NULL; - } - -@@ -404,7 +401,7 @@ ibus_property_deserialize (IBusProperty *prop, - g_variant_get_child (variant, retval++, "u", &prop->priv->type); - - GVariant *subvar = g_variant_get_child_value (variant, retval++); -- if (prop->priv->label && !ibus_text_get_is_static (prop->priv->label)) { -+ if (prop->priv->label) { - g_object_unref (prop->priv->label); - } - prop->priv->label = IBUS_TEXT (ibus_serializable_deserialize (subvar)); -@@ -414,7 +411,7 @@ ibus_property_deserialize (IBusProperty *prop, - ibus_g_variant_get_child_string (variant, retval++, &prop->priv->icon); - - subvar = g_variant_get_child_value (variant, retval++); -- if (prop->priv->tooltip && !ibus_text_get_is_static (prop->priv->tooltip)) { -+ if (prop->priv->tooltip) { - g_object_unref (prop->priv->tooltip); - } - prop->priv->tooltip = IBUS_TEXT (ibus_serializable_deserialize (subvar)); -@@ -435,7 +432,7 @@ ibus_property_deserialize (IBusProperty *prop, - - /* Keep the serialized order for the compatibility when add new members. */ - subvar = g_variant_get_child_value (variant, retval++); -- if (prop->priv->symbol && !ibus_text_get_is_static (prop->priv->symbol)) { -+ if (prop->priv->symbol) { - g_object_unref (prop->priv->symbol); - } - prop->priv->symbol = IBUS_TEXT (ibus_serializable_deserialize (subvar)); -@@ -567,7 +564,7 @@ ibus_property_set_label (IBusProperty *prop, - g_assert (IBUS_IS_PROPERTY (prop)); - g_return_if_fail (label == NULL || IBUS_IS_TEXT (label)); - -- if (prop->priv->label && !ibus_text_get_is_static (prop->priv->label)) { -+ if (prop->priv->label) { - g_object_unref (prop->priv->label); - } - -@@ -575,8 +572,10 @@ ibus_property_set_label (IBusProperty *prop, - prop->priv->label = ibus_text_new_from_static_string (""); - } - else { -- prop->priv->label = g_object_ref_sink (label); -+ prop->priv->label = label; - } -+ -+ g_object_ref_sink (prop->priv->label); - } - - void -@@ -586,7 +585,7 @@ ibus_property_set_symbol (IBusProperty *prop, - g_assert (IBUS_IS_PROPERTY (prop)); - g_return_if_fail (symbol == NULL || IBUS_IS_TEXT (symbol)); - -- if (prop->priv->symbol && !ibus_text_get_is_static (prop->priv->symbol)) { -+ if (prop->priv->symbol) { - g_object_unref (prop->priv->symbol); - } - -@@ -594,8 +593,10 @@ ibus_property_set_symbol (IBusProperty *prop, - prop->priv->symbol = ibus_text_new_from_static_string (""); - } - else { -- prop->priv->symbol = g_object_ref_sink (symbol); -+ prop->priv->symbol = symbol; - } -+ -+ g_object_ref_sink (prop->priv->symbol); - } - - void -@@ -615,7 +616,7 @@ ibus_property_set_tooltip (IBusProperty *prop, - g_assert (IBUS_IS_PROPERTY (prop)); - g_assert (tooltip == NULL || IBUS_IS_TEXT (tooltip)); - -- if (prop->priv->tooltip && !ibus_text_get_is_static (prop->priv->tooltip)) { -+ if (prop->priv->tooltip) { - g_object_unref (prop->priv->tooltip); - } - -@@ -624,8 +625,9 @@ ibus_property_set_tooltip (IBusProperty *prop, - } - else { - prop->priv->tooltip = tooltip; -- g_object_ref_sink (prop->priv->tooltip); - } -+ -+ g_object_ref_sink (prop->priv->tooltip); - } - - void +diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c +index 3fc9c0f2..eaf7eb90 100644 +--- a/client/gtk2/ibusimcontext.c ++++ b/client/gtk2/ibusimcontext.c +@@ -577,10 +577,14 @@ _request_surrounding_text (IBusIMContext *context) + g_signal_emit (context, _signal_retrieve_surrounding_id, 0, + &return_value); + if (!return_value) { +- /* #2054 firefox::IMContextWrapper::GetCurrentParagraph() could +- * fail with the first typing on firefox but it succeeds with +- * the second typing. ++ /* Engines can disable the surrounding text feature with ++ * the updated capabilities. + */ ++ if (context->caps & IBUS_CAP_SURROUNDING_TEXT) { ++ context->caps &= ~IBUS_CAP_SURROUNDING_TEXT; ++ ibus_input_context_set_capabilities (context->ibuscontext, ++ context->caps); ++ } + if (!warned) { + g_warning ("%s has no capability of surrounding-text feature", + g_get_prgname ()); -- -2.34.1 +2.37.3 -From 1b5b9548ad418765717ce1fbdc70b3f3eaae67fc Mon Sep 17 00:00:00 2001 +From 7bbcce66e1ca694b7a62553327161290bf4ee283 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Mon, 14 Mar 2022 14:25:10 +0900 -Subject: [PATCH] client/gtk2: Revert CCedilla change for pt-BR +Date: Mon, 19 Sep 2022 11:52:14 +0900 +Subject: [PATCH] client/gtk2: Update surrounding text properties by focus in + +ibus_input_context_set_surrounding_text() should be succeeded +if input contexts are different so that ibus engines can +update surrounding text properties with focus in event. -gtk_im_context_simple_add_table() is deprecated in GTK4. -I decide to delete gtk_im_context_simple_add_table() here because -the change 03c9e591430c62354bbf26ef7bd4a2e6acfb7c8f is no longer needed -because IBusEngineSimple has implemented to load pt_br compose key -by locale +When an input context is created newly, RequireSurroundingText D-Bus +signal could not be received yet and set_surrounding_text() is failed. +Now "require-surrounding-text" signal is added to IBusInputContext +and clients can call set_surrounding_text() later. -BUG=chromium-os:11421 -BUG=http://codereview.appspot.com/3989060 +BUG=https://github.com/ibus/ibus/issues/2423 --- - client/gtk2/ibusimcontext.c | 33 +-------------------------------- - 1 file changed, 1 insertion(+), 32 deletions(-) + client/gtk2/ibusimcontext.c | 25 +++++++++++++++++++++++++ + src/ibusinputcontext.c | 29 ++++++++++++++++++++++++++++- + 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index a5e5e792..e314ae98 100644 +index eaf7eb90..6e338157 100644 --- a/client/gtk2/ibusimcontext.c +++ b/client/gtk2/ibusimcontext.c +@@ -70,6 +70,7 @@ struct _IBusIMContext { + #endif + + IBusInputContext *ibuscontext; ++ IBusInputContext *ibuscontext_needs_surrounding; + + /* preedit status */ + gchar *preedit_string; +@@ -985,6 +986,7 @@ ibus_im_context_init (GObject *obj) + ibusimcontext->cursor_area.height = 0; + + ibusimcontext->ibuscontext = NULL; ++ ibusimcontext->ibuscontext_needs_surrounding = NULL; + ibusimcontext->has_focus = FALSE; + ibusimcontext->time = GDK_CURRENT_TIME; + #ifdef ENABLE_SURROUNDING +@@ -2183,6 +2185,18 @@ _ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext, + g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); + } + ++static void ++_ibus_context_require_surrounding_text_cb (IBusInputContext *ibuscontext, ++ IBusIMContext *ibusimcontext) ++{ ++ IDEBUG ("%s", __FUNCTION__); ++ g_assert (ibusimcontext->ibuscontext == ibuscontext); ++ if (ibusimcontext->ibuscontext_needs_surrounding == ibuscontext) { ++ _request_surrounding_text (ibusimcontext); ++ ibusimcontext->ibuscontext_needs_surrounding = NULL; ++ } ++} ++ + static void + _ibus_context_destroy_cb (IBusInputContext *ibuscontext, + IBusIMContext *ibusimcontext) +@@ -2249,6 +2263,11 @@ _create_input_context_done (IBusBus *bus, + "hide-preedit-text", + G_CALLBACK (_ibus_context_hide_preedit_text_cb), + ibusimcontext); ++ g_signal_connect ( ++ ibusimcontext->ibuscontext, ++ "require-surrounding-text", ++ G_CALLBACK (_ibus_context_require_surrounding_text_cb), ++ ibusimcontext); + g_signal_connect (ibusimcontext->ibuscontext, "destroy", + G_CALLBACK (_ibus_context_destroy_cb), + ibusimcontext); +@@ -2265,6 +2284,12 @@ _create_input_context_done (IBusBus *bus, + + ibus_input_context_focus_in (ibusimcontext->ibuscontext); + _set_cursor_location_internal (ibusimcontext); ++ if (ibus_input_context_needs_surrounding_text ( ++ ibusimcontext->ibuscontext)) { ++ _request_surrounding_text (ibusimcontext); ++ } else { ++ ibusimcontext->ibuscontext_needs_surrounding = ibusimcontext->ibuscontext; ++ } + } + + if (!g_queue_is_empty (ibusimcontext->events_queue)) { +diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c +index 7981de38..28ae04ad 100644 +--- a/src/ibusinputcontext.c ++++ b/src/ibusinputcontext.c @@ -2,7 +2,7 @@ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang -- * Copyright (C) 2015-2021 Takao Fujiwara -+ * Copyright (C) 2015-2022 Takao Fujiwara - * Copyright (C) 2008-2021 Red Hat, Inc. +- * Copyright (C) 2018-2019 Takao Fujiwara ++ * Copyright (C) 2018-2022 Takao Fujiwara + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or -@@ -874,33 +874,6 @@ ibus_im_context_class_fini (IBusIMContextClass *class) - g_bus_unwatch_name (_daemon_name_watch_id); +@@ -55,6 +55,7 @@ enum { + CURSOR_DOWN_LOOKUP_TABLE, + REGISTER_PROPERTIES, + UPDATE_PROPERTY, ++ REQUIRE_SURROUNDING_TEXT, + LAST_SIGNAL, + }; + +@@ -488,6 +489,21 @@ ibus_input_context_class_init (IBusInputContextClass *class) + 1, + IBUS_TYPE_PROPERTY); + ++ /** ++ * IBusInputContext::require-surrounding-text: ++ * @context: An IBusInputContext. ++ * ++ * Emitted to receive the RequireSurroundingText signal from the daemon. ++ */ ++ context_signals[REQUIRE_SURROUNDING_TEXT] = ++ g_signal_new (I_("require-surrounding-text"), ++ G_TYPE_FROM_CLASS (class), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, ++ _ibus_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ + text_empty = ibus_text_new_from_static_string (""); + g_object_ref_sink (text_empty); } +@@ -735,6 +751,7 @@ ibus_input_context_g_signal (GDBusProxy *proxy, --/* Copied from gtk+2.0-2.20.1/modules/input/imcedilla.c to fix crosbug.com/11421. -- * Overwrite the original Gtk+'s compose table in gtk+-2.x.y/gtk/gtkimcontextsimple.c. */ -- --/* The difference between this and the default input method is the handling -- * of C+acute - this method produces C WITH CEDILLA rather than C WITH ACUTE. -- * For languages that use CCedilla and not acute, this is the preferred mapping, -- * and is particularly important for pt_BR, where the us-intl keyboard is -- * used extensively. -- */ --static guint16 cedilla_compose_seqs[] = { --#ifdef DEPRECATED_GDK_KEYSYMS -- GDK_dead_acute, GDK_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ -- GDK_dead_acute, GDK_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ -- GDK_Multi_key, GDK_apostrophe, GDK_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ -- GDK_Multi_key, GDK_apostrophe, GDK_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ -- GDK_Multi_key, GDK_C, GDK_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ -- GDK_Multi_key, GDK_c, GDK_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ --#else -- GDK_KEY_dead_acute, GDK_KEY_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ -- GDK_KEY_dead_acute, GDK_KEY_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ -- GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ -- GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ -- GDK_KEY_Multi_key, GDK_KEY_C, GDK_KEY_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ -- GDK_KEY_Multi_key, GDK_KEY_c, GDK_KEY_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ --#endif --}; -- - static void - ibus_im_context_init (GObject *obj) - { -@@ -936,10 +909,6 @@ ibus_im_context_init (GObject *obj) - - // Create slave im context - ibusimcontext->slave = gtk_im_context_simple_new (); -- gtk_im_context_simple_add_table (GTK_IM_CONTEXT_SIMPLE (ibusimcontext->slave), -- cedilla_compose_seqs, -- 4, -- G_N_ELEMENTS (cedilla_compose_seqs) / (4 + 2)); + if (g_strcmp0 (signal_name, "RequireSurroundingText") == 0) { + priv->needs_surrounding_text = TRUE; ++ g_signal_emit (context, context_signals[REQUIRE_SURROUNDING_TEXT], 0); + return; + } - g_signal_connect (ibusimcontext->slave, - "commit", +@@ -1116,9 +1133,19 @@ ibus_input_context_set_surrounding_text (IBusInputContext *context, + + priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (context); + ++ /* This API should send "SetSurroundingText" D-Bus method when ++ * input contexts are switched between tabs in a text application ++ * so that engines can receive the updated surrounding texts after ++ * focus-in events happen. ++ * ++ * GNOME shell uses a single input context and the address of the input ++ * contexts are always same. So check the address of texts if the input ++ * contexts on applications are switched. ++ */ + if (cursor_pos != priv->surrounding_cursor_pos || + anchor_pos != priv->selection_anchor_pos || + priv->surrounding_text == NULL || ++ text != priv->surrounding_text || + g_strcmp0 (text->text, priv->surrounding_text->text) != 0) { + if (priv->surrounding_text) + g_object_unref (priv->surrounding_text); -- -2.34.1 +2.37.3 -From 37900574934bb01cc31860ae3ae2f668e4360838 Mon Sep 17 00:00:00 2001 +From cd621f8b82c80a174cd880cb27f27d7ccb9cb4d4 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Mon, 28 Mar 2022 23:18:58 +0900 -Subject: [PATCH] src/tests: Run ibus-daemon from CI even if GNOME desktop +Date: Thu, 3 Nov 2022 08:36:17 +0900 +Subject: [PATCH] ui/gtk3/switcher: Avoid to unref m_engines with double run -gnome-shell no longer launch ibus-daemon with IBus systemd file. -This is a workaround to call ibus-daemon after GNOME fails to -launch ibus-daemon +m_engines could be a buffer overflow if switcher.run() is called +again and m_engines is unrefed durling showing the swicher popup. -BUG=https://gitlab.gnome.org/GNOME/gdm/-/issues/777 +BUG=rhbz#2081055 --- - src/tests/ibus-desktop-testing-runner.in | 38 +++++++++++++++++++++--- - 1 file changed, 34 insertions(+), 4 deletions(-) + ui/gtk3/switcher.vala | 2 ++ + 1 file changed, 2 insertions(+) -diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in -index 48528326..6b208345 100755 ---- a/src/tests/ibus-desktop-testing-runner.in -+++ b/src/tests/ibus-desktop-testing-runner.in -@@ -55,6 +55,7 @@ GREEN='\033[0;32m' - RED='\033[0;31m' - NC='\033[0m' - -+ - print_log() - { - if [ x"$RESULT_LOG" != x ] ; then -@@ -69,6 +70,7 @@ print_log() - fi - } - -+ - usage() - { - $ECHO -e \ -@@ -95,6 +97,7 @@ usage() - "" - } - -+ - parse_args() - { - # This is GNU getopt. "sudo port getopt" in BSD? -@@ -129,6 +132,7 @@ parse_args() - fi - } - -+ - init_desktop() - { - if [ "$RESULT_LOG" != "" ] ; then -@@ -207,6 +211,7 @@ _EOF - #export XDG_SEAT=seat0 - } - -+ - run_dbus_daemon() - { - # Use dbus-launch --exit-with-session later instead of --sh-syntax -@@ -216,6 +221,7 @@ run_dbus_daemon() - export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus" - } - -+ - init_gnome() - { - # gsettings set command needs dconf-service with the same $DISPLAY -@@ -258,6 +264,7 @@ init_gnome() - fi - } - -+ - run_desktop() - { - echo "$DESKTOP_COMMAND" | grep gnome-session > /dev/null -@@ -278,12 +285,28 @@ run_desktop() - $DESKTOP_COMMAND & - PID_GNOME_SESSION=$! - sleep 30 -- if [ $HAS_GNOME -ne 0 ] ; then -- ibus-daemon --daemonize --verbose -- sleep 3 -- fi -+ -+ # gnome-shell 42 checks if org.freedesktop.IBus.session.GNOME.service -+ # systemd file is available with org.freedesktop.systemd1.Manager.GetUnit -+ # D-Bus method, which is provided by IBus 1.5.26, and if the file -+ # is available, gnome-shell no longer launch ibus-daemon -+ # because gnome-shell assumes gnome-session would launch ibus-daemon -+ # with org.freedesktop.systemd1.Manager.StartUnit D-Bus method. -+ # But actually gnome-session failed to launch ibus-daemon -+ # because the IBus systemd file depends on gnome-session.target -+ # but this CI launches gnome-session directly. -+ # -+ # So ibus-dameon is now always called here after gnome-shell fails to -+ # launch ibus-daemon. -+ # It may be better this CI launches GDM autologin to run gnome-session -+ # with gnome-session.target systemd file. -+ # But `systemctl start gdm` terminates the parent script forcibly -+ # and the script cannot get the CI result. -+ ibus-daemon --daemonize --verbose -+ sleep 3 - } - -+ - count_case_result() - { - retval=$1 -@@ -298,6 +321,7 @@ count_case_result() - echo $pass $fail - } - -+ - echo_case_result() - { - retval=$1 -@@ -311,6 +335,7 @@ echo_case_result() - fi - } - -+ - run_direct_test_cases() - { - pass=0 -@@ -363,6 +388,7 @@ EOF_ENVS - echo $pass $fail - } - -+ - run_gnome_desktop_testing_runner() - { - pass=0 -@@ -397,6 +423,7 @@ EOF - echo $pass $fail - } - -+ - run_test_suite() - { - pass=0 -@@ -435,6 +462,7 @@ EOF_RUNNER - fi - } - -+ - finit() - { - echo "# Killing left gnome-session and Xorg" -@@ -451,6 +479,7 @@ finit() - echo "# Finished $PROGNAME testing" - } - -+ - main() - { - parse_args "$@" -@@ -470,5 +499,6 @@ main() - finit - } - -+ - # Need to enclose $@ with double quotes not to split the array. - main "$@" +diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala +index a4529c88..9400e9ba 100644 +--- a/ui/gtk3/switcher.vala ++++ b/ui/gtk3/switcher.vala +@@ -143,6 +143,8 @@ class Switcher : Gtk.Window { + assert (m_loop == null); + assert (index < engines.length); + ++ if (m_is_running) ++ return index; + m_is_running = true; + m_keyval = keyval; + m_modifiers = state; -- -2.34.1 +2.37.3 diff --git a/ibus.spec b/ibus.spec index c071d65d9c76035a41a85487593f0c116c5d2e01..d1d02106eaec9b58f1b070013e8cef50cc4c520e 100644 --- a/ibus.spec +++ b/ibus.spec @@ -28,12 +28,12 @@ %global dbus_python_version 0.83.0 Name: ibus -Version: 1.5.26 +Version: 1.5.27 Release: %{anolis_release}%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki -Source0: https://github.com/ibus/%name/releases/download/%{version}/%{name}-%{version}.tar.gz +Source0: https://github.com/ibus/%{name}/releases/download/%{version}/%{name}-%{version}.tar.gz Source1: %{name}-xinput Source2: %{name}.conf.5 Patch0: %{name}-HEAD.patch @@ -51,7 +51,6 @@ BuildRequires: gtk4-devel %endif BuildRequires: dbus-glib-devel BuildRequires: dbus-python-devel >= %{dbus_python_version} -BuildRequires: desktop-file-utils BuildRequires: gtk-doc BuildRequires: dconf-devel BuildRequires: dbus-x11 @@ -69,9 +68,9 @@ BuildRequires: systemd # for ibus-keypress BuildRequires: libXtst-devel -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: (%{name}-gtk2%{?_isa} = %{version}-%{release} if gtk2) -Requires: %{name}-gtk3%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} +Requires: (%{name}-gtk2 = %{version}-%{release} if gtk2) +Requires: %{name}-gtk3 = %{version}-%{release} Requires: %{name}-setup = %{version}-%{release} Requires: iso-codes @@ -81,14 +80,10 @@ Requires: python3-gobject Requires: xorg-x11-xinit Requires: setxkbmap -Requires: desktop-file-utils -Requires(post): desktop-file-utils -Requires(postun): desktop-file-utils Requires: dconf Requires(postun): dconf Requires(posttrans): dconf -Requires: %{_sbindir}/alternatives Requires(post): %{_sbindir}/alternatives Requires(postun): %{_sbindir}/alternatives @@ -109,9 +104,8 @@ This package contains the libraries for IBus %package gtk2 Summary: IBus IM module for GTK2 -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} Requires: glib2 >= %{glib_ver} -Requires(post): glib2 >= %{glib_ver} Provides: ibus-gtk = %{version}-%{release} Obsoletes: ibus-gtk < %{version}-%{release} @@ -120,9 +114,8 @@ This package contains IBus IM module for GTK2 %package gtk3 Summary: IBus IM module for GTK3 -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} Requires: glib2 >= %{glib_ver} -Requires(post): glib2 >= %{glib_ver} %description gtk3 This package contains IBus IM module for GTK3 @@ -130,9 +123,8 @@ This package contains IBus IM module for GTK3 %if %{with gtk4} %package gtk4 Summary: IBus IM module for GTK4 -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} Requires: glib2 >= %{glib_ver} -Requires(post): glib2 >= %{glib_ver} %description gtk4 This package contains IBus IM module for GTK4 @@ -153,17 +145,14 @@ This is a setup utility for IBus. %package wayland Summary: IBus IM module for Wayland -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} %description wayland This package contains IBus IM module for Wayland %package devel Summary: Development tools for ibus -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: dbus-devel -Requires: glib2-devel -Requires: gettext +Requires: %{name}-libs = %{version}-%{release} %description devel The ibus-devel package contains the header files and developer @@ -191,7 +180,7 @@ desktop testing runner internally. %package tests Summary: Tests for the %{name} package -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name} = %{version}-%{release} %description tests The %{name}-tests package contains tests that can be used to verify @@ -199,25 +188,7 @@ the functionality of the installed %{name} package. %prep -%autosetup -S git -cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || : -cp client/gtk2/ibusimcontext.c client/gtk4/ibusimcontext.c || : - - -# prep test -for f in ibusimcontext.c ibusim.c -do - diff client/gtk2/$f client/gtk3/$f - if test $? -ne 0 ; then - echo "Have to copy $f into client/gtk3" - abort - fi -done -diff client/gtk2/ibusimcontext.c client/gtk4/ibusimcontext.c -if test $? -ne 0 ; then - echo "Have to copy ibusimcontext.c into client/gtk4" - abort -fi +%autosetup -p1 %build autoreconf -f -i -v @@ -241,46 +212,29 @@ autoreconf -f -i -v %make_build %install -make install DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' -rm -f $RPM_BUILD_ROOT%{_libdir}/libibus-*%{ibus_api_version}.la -rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/%{gtk2_binary_version}/immodules/im-ibus.la -rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-3.0/%{gtk3_binary_version}/immodules/im-ibus.la -%if %{with gtk4} -rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/%{gtk4_binary_version}/immodules/libim-ibus.la -%endif +%make_install # install man page -for S in %{SOURCE2} -do - cp $S . - MP=`basename $S` - gzip $MP - install -pm 644 -D ${MP}.gz $RPM_BUILD_ROOT%{_datadir}/man/man5/${MP}.gz -done +install -pm 644 -D %{SOURCE2} %{buildroot}%{_mandir}/man5/ibus.conf.5 # install xinput config file -install -pm 644 -D %{SOURCE1} $RPM_BUILD_ROOT%{_xinputconf} +install -pm 644 -D %{SOURCE1} %{buildroot}%{_xinputconf} -install -m 755 -d $RPM_BUILD_ROOT%pkgcache/bus +install -m 755 -d %{buildroot}%pkgcache/bus # install .desktop files -echo "NoDisplay=true" >> $RPM_BUILD_ROOT%{_datadir}/applications/org.freedesktop.IBus.Setup.desktop +echo "NoDisplay=true" >> %{buildroot}%{_datadir}/applications/org.freedesktop.IBus.Setup.desktop -HAS_PREFIX=$(grep prefix $RPM_BUILD_ROOT%{_bindir}/ibus-setup | wc -l) +HAS_PREFIX=$(grep prefix %{buildroot}%{_bindir}/ibus-setup | wc -l) [ x"$HAS_PREFIX" == x1 ] && \ - sed -i -e '/prefix/d' $RPM_BUILD_ROOT%{_bindir}/ibus-setup - -desktop-file-install --delete-original \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ - $RPM_BUILD_ROOT%{_datadir}/applications/* + sed -i -e '/prefix/d' %{buildroot}%{_bindir}/ibus-setup # FIXME: no version number %find_lang %{name}10 %check -make check \ - DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress" \ - VERBOSE=1 \ +%make_build check \ + DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress xkb-latin-layouts" \ %{nil} %post @@ -309,9 +263,6 @@ dconf update || : [ -x %{_bindir}/ibus ] && \ %{_bindir}/ibus write-cache --system &>/dev/null || : - -%ldconfig_scriptlets libs - %files -f %{name}10.lang %doc AUTHORS COPYING README %dir %{_datadir}/ibus/ @@ -328,12 +279,12 @@ dconf update || : %dir %{_datadir}/ibus/engine %{_datadir}/ibus/keymaps %{_datadir}/icons/hicolor/*/apps/* -%{_datadir}/man/man1/ibus.1.gz -%{_datadir}/man/man1/ibus-daemon.1.gz -%{_datadir}/man/man7/ibus-emoji.7.gz -%{_datadir}/man/man5/00-upstream-settings.5.gz -%{_datadir}/man/man5/ibus.5.gz -%{_datadir}/man/man5/ibus.conf.5.gz +%{_mandir}/man1/ibus.1.* +%{_mandir}/man1/ibus-daemon.1.* +%{_mandir}/man7/ibus-emoji.7.* +%{_mandir}/man5/00-upstream-settings.5.* +%{_mandir}/man5/ibus.5.* +%{_mandir}/man5/ibus.conf.5.* %{_libexecdir}/ibus-engine-simple %{_libexecdir}/ibus-dconf %{_libexecdir}/ibus-portal @@ -381,7 +332,7 @@ dconf update || : %{_bindir}/ibus-setup %{_datadir}/applications/org.freedesktop.IBus.Setup.desktop %{_datadir}/ibus/setup -%{_datadir}/man/man1/ibus-setup.1.gz +%{_mandir}/man1/ibus-setup.1.* %files wayland %{_libexecdir}/ibus-wayland @@ -399,9 +350,6 @@ dconf update || : %{_datadir}/vala/vapi/ibus-*1.0.deps %files devel-docs -# Own html dir since gtk-doc is heavy. -%dir %{_datadir}/gtk-doc -%dir %{_datadir}/gtk-doc/html %{_datadir}/gtk-doc/html/* %files desktop-testing @@ -416,5 +364,8 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Sat Nov 12 2022 Funda Wang - 1.5.27-1 +- New version 1.5.27 + * Tue Apr 12 2022 Chunmei Xu - 1.5.25-1 - init from upstream