From 62afb9683873166b5e171df4fb7e415ef86c0298 Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Jan 18 2022 08:32:16 +0000 Subject: [PATCH 1/10] Update and fix typo in autostart scripts --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index a2c6b3f..1c15687 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1139,3 +1139,81 @@ index 9aeafbf9..7e844838 100644 -- 2.33.1 +From f5757ada54edaa7d2e3ea948d340cdf48064e30c Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Thu, 6 Jan 2022 11:20:26 +0900 +Subject: [PATCH] ibusenginesimple: Fix to send char position at + update_preedit_text + +ibus_engine_update_preedit_text() should send the character position +instead of the byte position. + +BUG=https://github.com/ibus/ibus/issues/2368 +--- + src/ibusenginesimple.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c +index 83b04ebc..a80e41a5 100644 +--- a/src/ibusenginesimple.c ++++ b/src/ibusenginesimple.c +@@ -2,7 +2,7 @@ + /* vim:set et sts=4: */ + /* ibus - The Input Bus + * Copyright (C) 2014 Peng Huang +- * Copyright (C) 2015-2021 Takao Fujiwara ++ * Copyright (C) 2015-2022 Takao Fujiwara + * Copyright (C) 2014-2017 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or +@@ -386,7 +386,7 @@ ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple) + } else if (s->len >= G_MAXINT) { + g_warning ("%s is too long compose length: %lu", s->str, s->len); + } else { +- int len = (int)s->len; ++ guint len = (guint)g_utf8_strlen (s->str, -1); + IBusText *text = ibus_text_new_from_string (s->str); + ibus_text_append_attribute (text, + IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, len); +-- +2.33.1 + +From 3abcb19619750e242e1641c1c443fb460f055289 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Tue, 18 Jan 2022 17:03:53 +0900 +Subject: [PATCH] src/tests: Update ibus-desktop-testing-autostart + +--- + src/tests/ibus-desktop-testing-autostart | 2+ + src/tests/ibus-desktop-testing.desktop.in | 2 +- + 2 file changed, 3 insertion(+), 1 deletion(-) + +diff --git a/src/tests/ibus-desktop-testing-autostart b/src/tests/ibus-desktop-testing-autostart +index da22b64e..1e1eb180 100755 +--- a/src/tests/ibus-desktop-testing-autostart ++++ b/src/tests/ibus-desktop-testing-autostart +@@ -29,6 +29,8 @@ pwd + pstree -asp $$ + gsettings list-recursively org.gnome.shell + rpm -q gnome-shell-extension-no-overview gnome-shell gnome-session ++ps -ef | grep ibus | grep -v grep ++ibus address + ' + + if [ $# -gt 0 ] ; then +diff --git a/src/tests/ibus-desktop-testing.desktop.in b/src/tests/ibus-desktop-testing.desktop.in +index fa0c9b40..1b815345 100644 +--- a/src/tests/ibus-desktop-testing.desktop.in ++++ b/src/tests/ibus-desktop-testing.desktop.in +@@ -2,7 +2,7 @@ + Name=IBus Desktop Testing Runner + GenericName=Input Method Desktop Testing Runner + Comment=Test plugin for IBus Desktop Testing +-Exec=@ibexecdir@/ibus-desktop-testing-autostart /var/tmp/ibus-ci-autostart.log ++Exec=@libexecdir@/ibus-desktop-testing-autostart /var/tmp/ibus-ci-autostart.log + Terminal=false + Type=Application + Encoding=UTF-8 +-- +2.33.1 + diff --git a/ibus.spec b/ibus.spec index 595571c..80ee9cc 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.25 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -517,6 +517,9 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Tue Jan 18 2022 Takao Fujiwara - 1.5.25-7 +- Update and fix typo in autostart scripts + * Fri Dec 03 2021 Takao Fujiwara - 1.5.25-6 - Check mtime of entity compose file instead of one of symlink file - Disable emoji shortcut key with no-emoji hint From 81c4eabdbf168ce518da980fd3947ef3e2ef4a4e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Jan 20 2022 13:01:56 +0000 Subject: [PATCH 2/10] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- diff --git a/ibus.spec b/ibus.spec index 80ee9cc..94250c8 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.25 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -517,6 +517,9 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Thu Jan 20 2022 Fedora Release Engineering - 1.5.25-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Tue Jan 18 2022 Takao Fujiwara - 1.5.25-7 - Update and fix typo in autostart scripts From 7fd881404ae5866abc20c2d0b514c3348612877d Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Feb 03 2022 05:48:02 +0000 Subject: [PATCH 3/10] Fix several bugs - Change XKB layout string color in panel - Add Ctrl-semicolon to Emoji shortcut key - Fix unref problems with floating references - Update man page for Emoji shortcut key - Add IBUS_INPUT_HINT_PRIVATE for browser private mode - mkdir socket dirs instead of socket paths --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index 1c15687..25aed34 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1178,6 +1178,472 @@ index 83b04ebc..a80e41a5 100644 -- 2.33.1 +From 0e118e7e57caaa298e367ed99f2051ba47a35f81 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Thu, 20 Jan 2022 16:33:11 +0900 +Subject: [PATCH] data/dconf: Change XKB layout string color in panel + +Replace '#415099' with '#51a2da' in XKB layout string color + +BUG=https://github.com/ibus/ibus/issues/2364 +--- + data/dconf/org.freedesktop.ibus.gschema.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/dconf/org.freedesktop.ibus.gschema.xml b/data/dconf/org.freedesktop.ibus.gschema.xml +index 099b9c60..e90ee5ab 100644 +--- a/data/dconf/org.freedesktop.ibus.gschema.xml ++++ b/data/dconf/org.freedesktop.ibus.gschema.xml +@@ -146,7 +146,7 @@ + Show input method name on language bar + + +- '#415099' ++ '#51a2da' + RGBA value of XKB icon + XKB icon shows the layout string and the string is rendered with the RGBA value. The RGBA value can be 1. a color name from X11, 2. a hex value in form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha. + +-- +2.33.1 + +From d9ff2bb6b04a7cf7d99f4e9832b4b8905858178c Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Thu, 20 Jan 2022 16:41:37 +0900 +Subject: [PATCH] data/dconf: Add Ctrl-semicolon to Emoji shortcut key + +period key is needed Shift key in French keyboard and Ctrl-period does +not work. +Add Ctrl-semicolon in org.freedesktop.ibus.panel.emoji.hotkey to fix +the problem. + +BUG=https://github.com/ibus/ibus/issues/2360 +--- + data/dconf/org.freedesktop.ibus.gschema.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/dconf/org.freedesktop.ibus.gschema.xml b/data/dconf/org.freedesktop.ibus.gschema.xml +index e90ee5ab..516f7520 100644 +--- a/data/dconf/org.freedesktop.ibus.gschema.xml ++++ b/data/dconf/org.freedesktop.ibus.gschema.xml +@@ -183,7 +183,7 @@ + The shortcut keys for turning Unicode typing on or off + + +- [ '<Control>period' ] ++ [ '<Control>period', '<Control>semicolon' ] + Emoji shortcut keys for gtk_accelerator_parse + The shortcut keys for turning emoji typing on or off + +-- +2.33.1 + +From 5a455b1ead5d72483952356ddfe25b9e3b637e6f Mon Sep 17 00:00:00 2001 +From: Eberhard Beilharz +Date: Wed, 13 Oct 2021 19:00:47 +0200 +Subject: [PATCH] Fix unref problems with floating references + +When running with debug-enabled GLIB there are several critical +errors output: "A floating object ... was finalized. This means +that someone called g_object_unref() on an object that had only +a floating reference; the initial floating reference is not +owned by anyone and must be removed with g_object_ref_sink()." + +This change fixes this by calling `g_object_ref_sink()` before +`g_object_unref()` if we have a floating reference. + +It also fixes another related problem where we called +`g_object_unref()` on a static IBusText string (created with +`ibus_text_new_from_static_string()`) for which the API documentation +says not to free. + +BUG=https://github.com/ibus/ibus/pull/2359 +--- + src/ibusinputcontext.c | 21 ++++++++++++++------- + src/ibusproperty.c | 32 ++++++++++++++++---------------- + 2 files changed, 30 insertions(+), 23 deletions(-) + +diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c +index 2b1438fc..4b27551b 100644 +--- a/src/ibusinputcontext.c ++++ b/src/ibusinputcontext.c +@@ -550,7 +550,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, + g_signal_emit (context, context_signals[COMMIT_TEXT], 0, text); + + if (g_object_is_floating (text)) +- g_object_unref (text); ++ g_object_ref_sink (text); ++ g_object_unref (text); + return; + } + if (g_strcmp0 (signal_name, "UpdatePreeditText") == 0) { +@@ -569,7 +570,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, + visible); + + if (g_object_is_floating (text)) +- g_object_unref (text); ++ g_object_ref_sink (text); ++ g_object_unref (text); + return; + } + if (g_strcmp0 (signal_name, "UpdatePreeditTextWithMode") == 0) { +@@ -591,7 +593,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, + mode); + + if (g_object_is_floating (text)) +- g_object_unref (text); ++ g_object_ref_sink (text); ++ g_object_unref (text); + return; + } + +@@ -619,7 +622,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, + text, + visible); + if (g_object_is_floating (text)) +- g_object_unref (text); ++ g_object_ref_sink (text); ++ g_object_unref (text); + return; + } + +@@ -637,7 +641,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, + table, + visible); + if (g_object_is_floating (table)) +- g_object_unref (table); ++ g_object_ref_sink (table); ++ g_object_unref (table); + return; + + } +@@ -655,7 +660,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, + prop_list); + + if (g_object_is_floating (prop_list)) +- g_object_unref (prop_list); ++ g_object_ref_sink (prop_list); ++ g_object_unref (prop_list); + return; + } + +@@ -668,7 +674,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, + g_signal_emit (context, context_signals[UPDATE_PROPERTY], 0, prop); + + if (g_object_is_floating (prop)) +- g_object_unref (prop); ++ g_object_ref_sink (prop); ++ g_object_unref (prop); + return; + } + +diff --git a/src/ibusproperty.c b/src/ibusproperty.c +index e87d26b6..6d4ed088 100644 +--- a/src/ibusproperty.c ++++ b/src/ibusproperty.c +@@ -336,17 +336,20 @@ ibus_property_destroy (IBusProperty *prop) + prop->priv->icon = NULL; + + if (prop->priv->label) { +- g_object_unref (prop->priv->label); ++ if (!ibus_text_get_is_static (prop->priv->label)) ++ g_object_unref (prop->priv->label); + prop->priv->label = NULL; + } + + if (prop->priv->symbol) { +- g_object_unref (prop->priv->symbol); ++ if (!ibus_text_get_is_static (prop->priv->symbol)) ++ g_object_unref (prop->priv->symbol); + prop->priv->symbol = NULL; + } + + if (prop->priv->tooltip) { +- g_object_unref (prop->priv->tooltip); ++ if (!ibus_text_get_is_static (prop->priv->tooltip)) ++ g_object_unref (prop->priv->tooltip); + prop->priv->tooltip = NULL; + } + +@@ -401,7 +404,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 != NULL) { ++ if (prop->priv->label && !ibus_text_get_is_static (prop->priv->label)) { + g_object_unref (prop->priv->label); + } + prop->priv->label = IBUS_TEXT (ibus_serializable_deserialize (subvar)); +@@ -411,7 +414,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 != NULL) { ++ if (prop->priv->tooltip && !ibus_text_get_is_static (prop->priv->tooltip)) { + g_object_unref (prop->priv->tooltip); + } + prop->priv->tooltip = IBUS_TEXT (ibus_serializable_deserialize (subvar)); +@@ -432,7 +435,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 != NULL) { ++ if (prop->priv->symbol && !ibus_text_get_is_static (prop->priv->symbol)) { + g_object_unref (prop->priv->symbol); + } + prop->priv->symbol = IBUS_TEXT (ibus_serializable_deserialize (subvar)); +@@ -564,7 +567,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) { ++ if (prop->priv->label && !ibus_text_get_is_static (prop->priv->label)) { + g_object_unref (prop->priv->label); + } + +@@ -583,7 +586,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) { ++ if (prop->priv->symbol && !ibus_text_get_is_static (prop->priv->symbol)) { + g_object_unref (prop->priv->symbol); + } + +@@ -612,19 +615,16 @@ ibus_property_set_tooltip (IBusProperty *prop, + g_assert (IBUS_IS_PROPERTY (prop)); + g_assert (tooltip == NULL || IBUS_IS_TEXT (tooltip)); + +- IBusPropertyPrivate *priv = prop->priv; +- +- if (priv->tooltip) { +- g_object_unref (priv->tooltip); ++ if (prop->priv->tooltip && !ibus_text_get_is_static (prop->priv->tooltip)) { ++ g_object_unref (prop->priv->tooltip); + } + + if (tooltip == NULL) { +- priv->tooltip = ibus_text_new_from_static_string (""); +- g_object_ref_sink (priv->tooltip); ++ prop->priv->tooltip = ibus_text_new_from_static_string (""); + } + else { +- priv->tooltip = tooltip; +- g_object_ref_sink (priv->tooltip); ++ prop->priv->tooltip = tooltip; ++ g_object_ref_sink (prop->priv->tooltip); + } + } + +-- +2.33.1 + +From ad95015dc411f84dd9b8869e596e4707cd2ccd2b Mon Sep 17 00:00:00 2001 +From: Sibo Dong <46512211+dongsibo@users.noreply.github.com> +Date: Wed, 2 Feb 2022 19:18:02 +0900 +Subject: [PATCH] ui/gtk3: Update man page for Emoji shortcut key + +The default Emoji shortcut key was changed but not updated in +the ibus-emoji.7 man page. + +BUG=https://github.com/ibus/ibus/pull/2353 +--- + ui/gtk3/ibus-emoji.7.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ui/gtk3/ibus-emoji.7.in b/ui/gtk3/ibus-emoji.7.in +index 9c6d3c6f..b4d941ec 100644 +--- a/ui/gtk3/ibus-emoji.7.in ++++ b/ui/gtk3/ibus-emoji.7.in +@@ -1,8 +1,8 @@ + .\" This file is distributed under the same license as the ibus + .\" package. +-.\" Copyright (C) Takao Fujiwara , 2017-2018. ++.\" Copyright (C) Takao Fujiwara , 2017-2022. + .\" +-.TH "IBUS EMOJI" 7 "August 2018" "@VERSION@" "User Commands" ++.TH "IBUS EMOJI" 7 "February 2022" "@VERSION@" "User Commands" + .SH NAME + .B ibus-emoji + \- Call the IBus emoji utility by +@@ -51,7 +51,7 @@ E.g. "Noto Color Emoji", "Android Emoji" font. + + .SH "KEYBOARD OPERATIONS" + .TP +-\fBControl-Shift-e\fR ++\fBControl-Period or Control-Semicolon\fR + Launch IBus Emojier. The shortcut key can be customized by + .B ibus\-setup (1). + .TP +-- +2.33.1 + +From 0f1485bfa687386f26ef5909c123e0ae2e3e11b9 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Thu, 3 Feb 2022 14:03:30 +0900 +Subject: [PATCH] src: Add IBUS_INPUT_HINT_PRIVATE for browser private mode + +GTK4 added GTK_INPUT_HINT_PRIVATE recently for Web brower +private or guest mode. + +BUG=https://github.com/ibus/ibus/issues/2315 +--- + src/ibustypes.h | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/ibustypes.h b/src/ibustypes.h +index 798ad04d..990659ac 100644 +--- a/src/ibustypes.h ++++ b/src/ibustypes.h +@@ -2,7 +2,8 @@ + /* vim:set et sts=4: */ + /* ibus - The Input Bus + * Copyright (C) 2008-2013 Peng Huang +- * Copyright (C) 2008-2020 Red Hat, Inc. ++ * Copyright (C) 2010-2022 Takao Fujiwara ++ * Copyright (C) 2008-2022 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -300,6 +301,8 @@ typedef enum + * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. Since 1.5.11 + * @IBUS_INPUT_HINT_EMOJI: Suggest offering Emoji support. Since 1.5.24 + * @IBUS_INPUT_HINT_NO_EMOJI: Suggest not offering Emoji support. Since 1.5.24 ++ * @IBUS_INPUT_HINT_PRIVATE: Request that the input method should not ++ * update personalized data (like typing history). Since 1.5.26 + * + * Describes hints that might be taken into account by engines. Note + * that engines may already tailor their behaviour according to the +@@ -326,7 +329,8 @@ typedef enum + IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, + IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8, + IBUS_INPUT_HINT_EMOJI = 1 << 9, +- IBUS_INPUT_HINT_NO_EMOJI = 1 << 10 ++ IBUS_INPUT_HINT_NO_EMOJI = 1 << 10, ++ IBUS_INPUT_HINT_PRIVATE = 1 << 11 + } IBusInputHints; + + #endif +-- +2.33.1 + +From 787b564982d17017cb35ab87b71b6a16d7440387 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Thu, 3 Feb 2022 14:34:34 +0900 +Subject: [PATCH] bus: mkdir socket dirs instead of socket paths + +IBus ran mkdir for socket paths for --address=unix:path +but should does the socket directories instead. + +BUG=https://github.com/ibus/ibus/issues/2363 +--- + bus/server.c | 39 +++++++++++++++++++++++---------------- + 1 file changed, 23 insertions(+), 16 deletions(-) + +diff --git a/bus/server.c b/bus/server.c +index e8d0ce2b..6abf8427 100644 +--- a/bus/server.c ++++ b/bus/server.c +@@ -2,7 +2,7 @@ + /* vim:set et sts=4: */ + /* bus - The Input Bus + * Copyright (C) 2008-2010 Peng Huang +- * Copyright (C) 2011-2021 Takao Fujiwara ++ * Copyright (C) 2011-2022 Takao Fujiwara + * Copyright (C) 2008-2021 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or +@@ -38,14 +38,14 @@ static GDBusServer *server = NULL; + static GMainLoop *mainloop = NULL; + static BusDBusImpl *dbus = NULL; + static BusIBusImpl *ibus = NULL; +-static gchar *address = NULL; ++static char *address = NULL; + static gboolean _restart = FALSE; + + static void + _restart_server (void) + { +- gchar *exe; +- gint fd; ++ char *exe; ++ int fd; + ssize_t r; + int MAXSIZE = 0xFFF; + char proclnk[MAXSIZE]; +@@ -201,11 +201,11 @@ bus_acquired_handler (GDBusConnection *connection, + NULL); + } + +-static gchar * ++static char * + _bus_extract_address (void) + { +- gchar *socket_address = g_strdup (g_address); +- gchar *p; ++ char *socket_address = g_strdup (g_address); ++ char *p; + + #define IF_REPLACE_VARIABLE_WITH_FUNC(variable, func, format) \ + if ((p = g_strstr_len (socket_address, -1, (variable)))) { \ +@@ -242,12 +242,12 @@ bus_server_init (void) + #define IBUS_UNIX_ABSTRACT "unix:abstract=" + #define IBUS_UNIX_DIR "unix:dir=" + +- gchar *socket_address; ++ char *socket_address; + GDBusServerFlags flags = G_DBUS_SERVER_FLAGS_NONE; +- gchar *guid; ++ char *guid; + GDBusAuthObserver *observer; + GError *error = NULL; +- gchar *unix_dir = NULL; ++ char *unix_dir = NULL; + + dbus = bus_dbus_impl_get_default (); + ibus = bus_ibus_impl_get_default (); +@@ -256,18 +256,24 @@ bus_server_init (void) + /* init server */ + socket_address = _bus_extract_address (); + +-#define IF_GET_UNIX_DIR(prefix) \ ++#define IF_GET_UNIX_DIR_FROM_DIR(prefix) \ + if (g_str_has_prefix (socket_address, (prefix))) { \ + unix_dir = g_strdup (socket_address + strlen (prefix)); \ + } ++#define IF_GET_UNIX_DIR_FROM_PATH(prefix) \ ++ if (g_str_has_prefix (socket_address, (prefix))) { \ ++ const char *unix_path = socket_address + strlen (prefix); \ ++ unix_dir = g_path_get_dirname (unix_path); \ ++ } ++ + +- IF_GET_UNIX_DIR (IBUS_UNIX_TMPDIR) ++ IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_TMPDIR) + else +- IF_GET_UNIX_DIR (IBUS_UNIX_PATH) ++ IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_PATH) + else +- IF_GET_UNIX_DIR (IBUS_UNIX_ABSTRACT) ++ IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_ABSTRACT) + else +- IF_GET_UNIX_DIR (IBUS_UNIX_DIR) ++ IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_DIR) + else { + g_error ("Your socket address \"%s\" does not correspond with " + "one of the following formats; " +@@ -329,7 +335,8 @@ bus_server_init (void) + bus_acquired_handler, + NULL, NULL, NULL, NULL); + +-#undef IF_GET_UNIX_DIR ++#undef IF_GET_UNIX_DIR_FROM_DIR ++#undef IF_GET_UNIX_DIR_FROM_PATH + #undef IBUS_UNIX_TMPDIR + #undef IBUS_UNIX_PATH + #undef IBUS_UNIX_ABSTRACT +-- +2.33.1 + From 3abcb19619750e242e1641c1c443fb460f055289 Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Tue, 18 Jan 2022 17:03:53 +0900 diff --git a/ibus.spec b/ibus.spec index 94250c8..2ca6a83 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.25 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -517,6 +517,14 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Thu Feb 03 2022 Takao Fujiwara - 1.5.25-9 +- Change XKB layout string color in panel +- Add Ctrl-semicolon to Emoji shortcut key +- Fix unref problems with floating references +- Update man page for Emoji shortcut key +- Add IBUS_INPUT_HINT_PRIVATE for browser private mode +- mkdir socket dirs instead of socket paths + * Thu Jan 20 2022 Fedora Release Engineering - 1.5.25-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From ee71d023a9506bc3b570c754a987fa6f2d8c1bce Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Feb 12 2022 02:49:17 +0000 Subject: [PATCH 4/10] Add systemd unit file - Do not mkdir abstract unix socket - Fix IBus.key_event_from_string --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index 25aed34..cb688e1 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1644,16 +1644,634 @@ index e8d0ce2b..6abf8427 100644 -- 2.33.1 -From 3abcb19619750e242e1641c1c443fb460f055289 Mon Sep 17 00:00:00 2001 +From dfd3fbf26fa4b5ff20512b166a8dd321afc10344 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Tue, 18 Jan 2022 17:03:53 +0900 -Subject: [PATCH] src/tests: Update ibus-desktop-testing-autostart +Date: Thu, 3 Feb 2022 17:31:08 +0900 +Subject: [PATCH] bus: Do not mkdir abstract unix socket +IBus ran mkdir for unix abstract sockets for --address=unix:abstract +but should not need to mkdir. + +BUG=https://github.com/ibus/ibus/issues/2363 +--- + bus/server.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/bus/server.c b/bus/server.c +index 6abf8427..968d5346 100644 +--- a/bus/server.c ++++ b/bus/server.c +@@ -265,13 +265,15 @@ bus_server_init (void) + const char *unix_path = socket_address + strlen (prefix); \ + unix_dir = g_path_get_dirname (unix_path); \ + } ++#define IF_GET_UNIX_DIR_FROM_ABSTRACT(prefix) \ ++ if (g_str_has_prefix (socket_address, (prefix))) {} + + + IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_TMPDIR) + else + IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_PATH) + else +- IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_ABSTRACT) ++ IF_GET_UNIX_DIR_FROM_ABSTRACT (IBUS_UNIX_ABSTRACT) + else + IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_DIR) + else { +@@ -281,7 +283,8 @@ bus_server_init (void) + IBUS_UNIX_ABSTRACT "FILE, " IBUS_UNIX_DIR "DIR.", + socket_address); + } +- if (!g_file_test (unix_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { ++ if (unix_dir && ++ !g_file_test (unix_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { + /* Require mkdir for BSD system. + * The mode 0700 can eliminate malicious users change the mode. + * `chmod` runs for the last directory only not to change the modes +@@ -337,6 +340,7 @@ bus_server_init (void) + + #undef IF_GET_UNIX_DIR_FROM_DIR + #undef IF_GET_UNIX_DIR_FROM_PATH ++#undef IF_GET_UNIX_DIR_FROM_ABSTRACT + #undef IBUS_UNIX_TMPDIR + #undef IBUS_UNIX_PATH + #undef IBUS_UNIX_ABSTRACT +-- +2.33.1 + +From c69b61aa66239e1b13c9764b2d3bf6f02d086785 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 4 Feb 2022 15:08:36 +0900 +Subject: [PATCH] src: Fix ibus_key_event_from_string for + gobject-introspection + +BUG=https://github.com/ibus/ibus/issues/2330 +--- + src/ibusshare.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/ibusshare.h b/src/ibusshare.h +index d70af29f..d739e2ff 100644 +--- a/src/ibusshare.h ++++ b/src/ibusshare.h +@@ -2,8 +2,8 @@ + /* vim:set et sts=4: */ + /* ibus - The Input Bus + * Copyright (C) 2008-2013 Peng Huang +- * Copyright (C) 2015-2018 Takao Fujiwara +- * Copyright (C) 2008-2018 Red Hat, Inc. ++ * Copyright (C) 2015-2022 Takao Fujiwara ++ * Copyright (C) 2008-2022 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -333,8 +333,8 @@ gchar *ibus_key_event_to_string + /** + * ibus_key_event_from_string: + * @string: Key event string. +- * @keyval: Variable that hold key symbol result. +- * @modifiers: Variable that hold modifiers result. ++ * @keyval: (out): Variable that hold key symbol result. ++ * @modifiers: (out): Variable that hold modifiers result. + * + * Parse key event string and return key symbol and modifiers. + * +-- +2.33.1 + +From a076b388d856aeb4c8f8317dd6cd9dd6d61fe9ac Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Wed, 4 Nov 2020 10:48:45 +0100 +Subject: [PATCH] src, client/x11: Add systemd unit file + +This so far depends on GNOME targets, and is thus just usable there. +Other DEs wishing to use systemd and ibus will need to add the +necessary dependencies where applicable. + +There are 2 scenarios here: +- On X11 sessions, ibus-daemon will be launched with --xim parameter, + so ibus-x11 is started with it. +- On Wayland sessions, ibus-daemon will be started without XIM support, + ibus-x11 will be launched and tear down together with all other + session X11 services while Xwayland is running. + +For the second part of the second situation, additionally install +a script at /etc/xdg/Xwayland-session.d, which takes care of X11 +service initialization together with the Xwayland instance. + +BUG=https://github.com/ibus/ibus/pull/2377 --- - src/tests/ibus-desktop-testing-autostart | 2+ + client/x11/10-ibus-x11.in | 2 ++ + client/x11/Makefile.am | 18 ++++++++++++ + configure.ac | 17 +++++++++++ + src/Makefile.am | 16 +++++++++++ + ....freedesktop.IBus.session.GNOME.service.in | 28 +++++++++++++++++++ + 5 files changed, 81 insertions(+) + create mode 100755 client/x11/10-ibus-x11.in + create mode 100644 bus/services/org.freedesktop.IBus.session.GNOME.service.in + +diff --git a/client/x11/10-ibus-x11.in b/client/x11/10-ibus-x11.in +new file mode 100755 +index 00000000..973cbb6f +--- /dev/null ++++ b/client/x11/10-ibus-x11.in +@@ -0,0 +1,2 @@ ++#!/bin/sh ++@libexecdir@/ibus-x11 & +diff --git a/client/x11/Makefile.am b/client/x11/Makefile.am +index 12de6ea8..90454bcf 100644 +--- a/client/x11/Makefile.am ++++ b/client/x11/Makefile.am +@@ -67,6 +67,16 @@ noinst_HEADERS = \ + locales.h \ + $(NULL) + ++xwaylandsessiond_in_files = 10-ibus-x11.in ++xwaylandsessiond_DATA = $(xwaylandsessiond_in_files:.in=) ++xwaylandsessionddir=$(sysconfdir)/xdg/Xwayland-session.d ++ ++10-ibus-x11: 10-ibus-x11.in ++ $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ ++ ++install-data-hook: ++ chmod 755 $(DESTDIR)$(xwaylandsessionddir)/10-ibus-x11 ++ + $(libIMdkit): + (cd $(top_builddir)/util/IMdkit; make) + +@@ -81,4 +91,12 @@ locales.h: + xargs python -c 'import sys;print "#define LOCALES_STRING \"%s\"" % ",".join(sys.argv[1:])' \ + ) > $@ + ++CLEANFILES = \ ++ $(xwaylandsessiond_DATA) \ ++ $(NULL) ++ ++EXTRA_DIST = \ ++ 10-ibus-x11.in \ ++ $(NULL) ++ + -include $(top_srcdir)/git.mk +diff --git a/configure.ac b/configure.ac +index ce096ad3..73c5e429 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -393,6 +393,22 @@ if test x"$enable_dconf" = x"yes"; then + enable_dconf="yes (enabled, use --disable-dconf to disable)" + fi + ++AC_ARG_ENABLE(systemd-services, ++ AS_HELP_STRING([--disable-systemd-services], ++ [Disable systemd services installation]), ++ [enable_systemd=$enableval], ++ [enable_systemd=yes] ++) ++AM_CONDITIONAL([ENABLE_SYSTEMD], [test x"$enable_systemd" = x"yes"]) ++ ++if test x"$enable_systemd" = x"yes"; then ++ PKG_CHECK_MODULES(SYSTEMD, [ ++ systemd >= 0.7.5 ++ ]) ++ AC_SUBST([SYSTEMD_USER_UNIT_DIR], [`$PKG_CONFIG --variable systemduserunitdir systemd`]) ++ enable_systemd="yes (enabled, use --disable-systemd-services to disable)" ++fi ++ + # Check env. + AC_PATH_PROG(ENV_IBUS_TEST, env) + AC_SUBST(ENV_IBUS_TEST) +@@ -860,6 +876,7 @@ Build options: + UCD directory $UCD_DIR + Socket directory "$IBUS_SOCKET_DIR" + XFixes client disconnect $have_xfixes ++ Install systemd service $enable_systemd + Run test cases $enable_tests + Install tests $enable_install_tests + ]) +diff --git a/src/Makefile.am b/src/Makefile.am +index 578694b5..bbaa6c90 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -317,6 +317,11 @@ install-data-hook: + rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \ + fi; \ + done ++ $(MKDIR_P) "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants/" ++ ( \ ++ cd "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants" ; \ ++ $(LN_S) -f "../org.freedesktop.IBus.session.GNOME.service" .; \ ++ ) + + emoji_parser_SOURCES = \ + emoji-parser.c \ +@@ -383,7 +388,17 @@ clean-local: + $(NULL) + endif + ++if ENABLE_SYSTEMD ++systemdservice_in_files = org.freedesktop.IBus.session.GNOME.service.in ++systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) ++systemdservicedir=$(SYSTEMD_USER_UNIT_DIR) ++ ++org.freedesktop.IBus.session.GNOME.service: org.freedesktop.IBus.session.GNOME.service.in ++ $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" $< > $@.tmp && mv $@.tmp $@ ++endif ++ + EXTRA_DIST = \ ++ org.freedesktop.IBus.session.GNOME.service.in \ + emoji-parser.c \ + ibusversion.h.in \ + ibusmarshalers.list \ +@@ -393,6 +408,7 @@ EXTRA_DIST = \ + $(NULL) + + CLEANFILES += \ ++ $(systemdservice_DATA) \ + $(BUILT_SOURCES) \ + stamp-ibusmarshalers.h \ + stamp-ibusenumtypes.h \ +diff --git a/bus/services/org.freedesktop.IBus.session.GNOME.service.in b/bus/services/org.freedesktop.IBus.session.GNOME.service.in +new file mode 100644 +index 00000000..76444dbd +--- /dev/null ++++ b/bus/services/org.freedesktop.IBus.session.GNOME.service.in +@@ -0,0 +1,28 @@ ++[Unit] ++Description=IBus Daemon ++CollectMode=inactive-or-failed ++ ++# Require GNOME session and specify startup ordering ++Requisite=gnome-session-initialized.target ++After=gnome-session-initialized.target ++PartOf=gnome-session-initialized.target ++Before=gnome-session.target ++ ++# Needs to run when DISPLAY/WAYLAND_DISPLAY is set ++After=gnome-session-initialized.target ++PartOf=gnome-session-initialized.target ++ ++# Never run in GDM ++Conflicts=gnome-session@gnome-login.target ++ ++[Service] ++Type=dbus ++# Only pull --xim in X11 session, it is done via Xwayland-session.d on Wayland ++ExecStart=sh -c '@bindir@/ibus-daemon --panel disable $([[ $XDG_SESSION_TYPE == "x11" ]] && echo "--xim")' ++Restart=on-abnormal ++BusName=org.freedesktop.IBus ++TimeoutStopSec=5 ++Slice=session.slice ++ ++[Install] ++WantedBy=gnome-session.target +-- +2.33.1 + +From 9a87a78549cb938c4810bcd311dd36823afd0fcd Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Sat, 12 Feb 2022 10:50:54 +0900 +Subject: [PATCH] src/services: Add org.freedesktop.IBus.session.generic.service + +Move bus/*.service.in & src/*.service.in into bus/services + +BUG=https://github.com/ibus/ibus/pull/2381 +--- + bus/Makefile.am | 16 +---- + bus/services/Makefile.am | 68 +++++++++++++++++++ + .../org.freedesktop.IBus.service.in | 0 + ....freedesktop.IBus.session.GNOME.service.in | 2 +- + ...reedesktop.IBus.session.generic.service.in | 15 ++++ + configure.ac | 48 ++++++------- + src/Makefile.am | 16 ----- + 7 files changed, 112 insertions(+), 53 deletions(-) + create mode 100644 bus/services/Makefile.am + create mode 100644 bus/services/org.freedesktop.IBus.service.in + create mode 100644 bus/services/org.freedesktop.IBus.session.generic.service.in + +diff --git a/bus/Makefile.am b/bus/Makefile.am +index 4383a874..e173ee25 100644 +--- a/bus/Makefile.am ++++ b/bus/Makefile.am +@@ -3,8 +3,8 @@ + # ibus - The Input Bus + # + # Copyright (c) 2007-2013 Peng Huang +-# Copyright (c) 2013-2018 Takao Fujiwara +-# Copyright (c) 2007-2018 Red Hat, Inc. ++# Copyright (c) 2013-2022 Takao Fujiwara ++# Copyright (c) 2007-2022 Red Hat, Inc. + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public +@@ -22,6 +22,7 @@ + # USA + + NULL = ++SUBDIRS = . services + + libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la + +@@ -190,15 +191,4 @@ man_onedir = $(mandir)/man1 + %.1.gz: %.1 + $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ + +- +-dbusservice_in_files = org.freedesktop.IBus.service.in +-dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) +-dbusservicedir=${datadir}/dbus-1/services +- +-org.freedesktop.IBus.service: org.freedesktop.IBus.service.in +- $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" -e "s|\@xim_cli_arg\@|$(XIM_CLI_ARG)|" $< > $@.tmp && mv $@.tmp $@ +- +-EXTRA_DIST += $(dbusservice_in_files) +-CLEANFILES += $(dbusservice_DATA) +- + -include $(top_srcdir)/git.mk +diff --git a/bus/services/Makefile.am b/bus/services/Makefile.am +new file mode 100644 +index 00000000..53c21f58 +--- /dev/null ++++ b/bus/services/Makefile.am +@@ -0,0 +1,68 @@ ++# vim:set noet ts=4: ++# ++# ibus - The Input Bus ++# ++# Copyright (c) 2022 Takao Fujiwara ++# Copyright (c) 2022 Red Hat, Inc. ++# ++# This library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++# ++# This library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with this library; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 ++# USA ++ ++NULL = ++ ++# Originally this file was added for GNOME but seems not to be used ++# at present. ++# ++# TODO: Check if flatpack uses this file and we could rename ++# org.freedesktop.IBus.service to org.freedesktop.IBus.DBus.GNOME.service ++dbusservice_in_files = org.freedesktop.IBus.service.in ++dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) ++dbusservicedir=${datadir}/dbus-1/services ++ ++systemdservice_in_files = \ ++ org.freedesktop.IBus.session.generic.service.in \ ++ org.freedesktop.IBus.session.GNOME.service.in \ ++ $(NULL) ++ ++%.service: %.service.in ++ $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" \ ++ -e "s|\@xim_cli_arg\@|$(XIM_CLI_ARG)|" $< > $@.tmp && \ ++ mv $@.tmp $@ ++ ++if ENABLE_SYSTEMD ++systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) ++systemdservicedir = $(SYSTEMD_USER_UNIT_DIR) ++ ++# in install-data-hook. ++install-data-hook: ++ $(MKDIR_P) "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants/" ++ ( \ ++ cd "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants" ; \ ++ $(LN_S) -f "../org.freedesktop.IBus.session.GNOME.service" .; \ ++ ) ++ $(NULL) ++endif ++ ++EXTRA_DIST = \ ++ $(dbusservice_in_files) \ ++ $(systemdservice_in_files) \ ++ $(NULL) ++ ++CLEANFILES = \ ++ $(dbusservice_DATA) \ ++ $(systemdservice_DATA) \ ++ $(NULL) ++ ++-include $(top_srcdir)/git.mk +diff --git a/bus/org.freedesktop.IBus.service.in b/bus/services/org.freedesktop.IBus.service.in +new file mode 100644 +index 00000000..9d493159 +--- /dev/null ++++ b/bus/services/org.freedesktop.IBus.service.in +@@ -0,0 +1,3 @@ ++[D-BUS Service] ++Name=org.freedesktop.IBus ++Exec=@bindir@/ibus-daemon --replace --panel disable @xim_cli_arg@ +diff --git a/bus/services/org.freedesktop.IBus.session.GNOME.service.in b/bus/services/org.freedesktop.IBus.session.GNOME.service.in +index 76444dbd..a99370fa 100644 +--- a/bus/services/org.freedesktop.IBus.session.GNOME.service.in ++++ b/bus/services/org.freedesktop.IBus.session.GNOME.service.in +@@ -1,5 +1,5 @@ + [Unit] +-Description=IBus Daemon ++Description=IBus Daemon for GNOME + CollectMode=inactive-or-failed + + # Require GNOME session and specify startup ordering +diff --git a/bus/services/org.freedesktop.IBus.session.generic.service.in b/bus/services/org.freedesktop.IBus.session.generic.service.in +new file mode 100644 +index 00000000..9d493159 +--- /dev/null ++++ b/bus/services/org.freedesktop.IBus.session.generic.service.in +@@ -0,0 +1,15 @@ ++[Unit] ++Description=IBus Daemon for generic sessions ++CollectMode=inactive-or-failed ++ ++# Never run in GNOME ++Conflicts=gnome-session-initialized.target ++ ++[Service] ++Type=dbus ++# Only pull --xim in X11 session, it is done via Xwayland-session.d on Wayland ++ExecStart=sh -c '@bindir@/ibus-daemon $IBUS_DAEMON_ARGS' ++Restart=on-abnormal ++BusName=org.freedesktop.IBus ++TimeoutStopSec=5 ++Slice=session.slice +diff --git a/configure.ac b/configure.ac +index 73c5e429..4137e6cc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3,8 +3,8 @@ + # ibus - The Input Bus + # + # Copyright (c) 2007-2016 Peng Huang +-# Copyright (c) 2015-2021 Takao Fujiwara +-# Copyright (c) 2007-2021 Red Hat, Inc. ++# Copyright (c) 2015-2022 Takao Fujiwara ++# Copyright (c) 2007-2022 Red Hat, Inc. + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public +@@ -791,24 +791,22 @@ AC_SUBST(XKBCONFIG_BASE) + AC_SUBST([GDBUS_CODEGEN], [`$PKG_CONFIG --variable gdbus_codegen gio-2.0`]) + + # OUTPUT files +-AC_CONFIG_FILES([ po/Makefile.in +-Makefile +-ibus-1.0.pc +-ibus.spec ++AC_CONFIG_FILES([ ++po/Makefile.in ++bindings/Makefile ++bindings/pygobject/Makefile ++bindings/vala/Makefile ++bus/Makefile ++bus/services/Makefile + client/Makefile + client/gtk2/Makefile + client/gtk3/Makefile + client/gtk4/Makefile + client/x11/Makefile + client/wayland/Makefile +-src/Makefile +-src/ibusversion.h +-src/tests/Makefile +-bus/Makefile +-portal/Makefile +-engine/Makefile +-util/Makefile +-util/IMdkit/Makefile ++conf/Makefile ++conf/dconf/Makefile ++conf/memconf/Makefile + data/Makefile + data/annotations/Makefile + data/icons/Makefile +@@ -819,20 +817,24 @@ docs/Makefile + docs/reference/Makefile + docs/reference/ibus/ibus-docs.sgml + docs/reference/ibus/Makefile +-m4/Makefile ++engine/Makefile + ibus/_config.py + ibus/Makefile + ibus/interface/Makefile +-ui/Makefile +-ui/gtk3/Makefile ++m4/Makefile ++portal/Makefile + setup/Makefile +-bindings/Makefile +-bindings/pygobject/Makefile +-bindings/vala/Makefile +-conf/Makefile +-conf/dconf/Makefile +-conf/memconf/Makefile ++src/Makefile ++src/ibusversion.h ++src/tests/Makefile + tools/Makefile ++ui/Makefile ++ui/gtk3/Makefile ++util/Makefile ++util/IMdkit/Makefile ++Makefile ++ibus-1.0.pc ++ibus.spec + ]) + + AC_OUTPUT +diff --git a/src/Makefile.am b/src/Makefile.am +index bbaa6c90..578694b5 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -317,11 +317,6 @@ install-data-hook: + rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \ + fi; \ + done +- $(MKDIR_P) "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants/" +- ( \ +- cd "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants" ; \ +- $(LN_S) -f "../org.freedesktop.IBus.session.GNOME.service" .; \ +- ) + + emoji_parser_SOURCES = \ + emoji-parser.c \ +@@ -388,17 +383,7 @@ clean-local: + $(NULL) + endif + +-if ENABLE_SYSTEMD +-systemdservice_in_files = org.freedesktop.IBus.session.GNOME.service.in +-systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) +-systemdservicedir=$(SYSTEMD_USER_UNIT_DIR) +- +-org.freedesktop.IBus.session.GNOME.service: org.freedesktop.IBus.session.GNOME.service.in +- $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" $< > $@.tmp && mv $@.tmp $@ +-endif +- + EXTRA_DIST = \ +- org.freedesktop.IBus.session.GNOME.service.in \ + emoji-parser.c \ + ibusversion.h.in \ + ibusmarshalers.list \ +@@ -408,7 +393,6 @@ EXTRA_DIST = \ + $(NULL) + + CLEANFILES += \ +- $(systemdservice_DATA) \ + $(BUILT_SOURCES) \ + stamp-ibusmarshalers.h \ + stamp-ibusenumtypes.h \ +-- +2.33.1 + +From e325fc21b492eee83cb93712472495059395dc7b Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Sat, 12 Feb 2022 11:02:29 +0900 +Subject: [PATCH] src/tests: Fix typos + +- test_metas_in location +- Check ibus processes in CI +- Fix libexec path +--- + src/tests/Makefile.am | 8 ++++---- + src/tests/ibus-desktop-testing-autostart | 2 ++ src/tests/ibus-desktop-testing.desktop.in | 2 +- - 2 file changed, 3 insertion(+), 1 deletion(-) + 3 files changed, 7 insertions(+), 5 deletions(-) +diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am +index 7d00f236..f932f18f 100644 +--- a/src/tests/Makefile.am ++++ b/src/tests/Makefile.am +@@ -3,7 +3,7 @@ + # ibus - The Input Bus + # + # Copyright (c) 2007-2015 Peng Huang +-# Copyright (c) 2015-2021 Takao Fujiwara ++# Copyright (c) 2015-2022 Takao Fujiwara + # Copyright (c) 2007-2018 Red Hat, Inc. + # + # This library is free software; you can redistribute it and/or +@@ -117,11 +117,11 @@ org.freedesktop.IBus.Desktop.Testing.desktop: ibus-desktop-testing.desktop.in + mv $@.tmp $@ + endif + +-$(test_metas): $(test_metas_in) $(test_programs) ++$(test_metas): $(test_metas_in) + f=`echo $@ | sed -e 's/\.test//'`; \ + TEST_EXEC=$(test_execsdir)/$$f; \ +- sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(test_metas_in) > $@.tmp; \ +- mv $@.tmp $@; \ ++ sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(srcdir)/$(test_metas_in) \ ++ > $@.tmp && mv $@.tmp $@; \ + $(NULL) + + ibus-compose-locales: ibus-compose-locales.in diff --git a/src/tests/ibus-desktop-testing-autostart b/src/tests/ibus-desktop-testing-autostart index da22b64e..1e1eb180 100755 --- a/src/tests/ibus-desktop-testing-autostart diff --git a/ibus-xx-desktop-testing-mutter.patch b/ibus-xx-desktop-testing-mutter.patch index 5af6c79..c39ef7a 100644 --- a/ibus-xx-desktop-testing-mutter.patch +++ b/ibus-xx-desktop-testing-mutter.patch @@ -1,6 +1,6 @@ From d63da885f8f4e3764b8b572347b70a0cefadc335 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Wed, 16 Jun 2021 20:55:20 +0900 +Date: Fri, 11 Feb 2022 11:43:57 +0900 Subject: [PATCH] src/tests: Change window manager to mutter for RHEL --- @@ -11,16 +11,16 @@ diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-t index 54b7e0d7..211e0da5 100755 --- a/src/tests/ibus-desktop-testing-runner.in +++ b/src/tests/ibus-desktop-testing-runner.in -@@ -44,7 +44,7 @@ TEST_LOG="test-suite.log" - TEST_LOG_STDOUT=0 +@@ -45,7 +45,7 @@ TEST_LOG_STDOUT=0 RESULT_LOG="" + SCREEN_LOG="" HAVE_GRAPHICS=1 -DESKTOP_COMMAND="dbus-launch --exit-with-session gnome-session" +DESKTOP_COMMAND="dbus-launch --exit-with-session mutter" PID_XORG=0 PID_GNOME_SESSION=0 TESTING_RUNNER="default" -@@ -80,9 +80,9 @@ usage() +@@ -81,9 +81,9 @@ usage() "-b, --builddir=BUILDDIR Set the BUILDDIR\n" \ "-s, --srcdir=SOURCEDIR Set the SOURCEDIR\n" \ "-c, --no-graphics Use Xvfb instead of Xorg\n" \ diff --git a/ibus.spec b/ibus.spec index 2ca6a83..e6c493f 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.25 -Release: 9%{?dist} +Release: 10%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -88,6 +88,7 @@ BuildRequires: wayland-devel BuildRequires: cldr-emoji-annotation BuildRequires: unicode-emoji BuildRequires: unicode-ucd +BuildRequires: systemd # for ibus-keypress BuildRequires: libXtst-devel @@ -433,6 +434,10 @@ dconf update || : %{_libexecdir}/ibus-x11 %{_sysconfdir}/dconf/db/ibus.d %{_sysconfdir}/dconf/profile/ibus +%dir %{_sysconfdir}/xdg/Xwayland-session.d +%{_sysconfdir}/xdg/Xwayland-session.d/10-ibus-x11 +%{_prefix}/lib/systemd/user/gnome-session.target.wants/*.service +%{_prefix}/lib/systemd/user/org.freedesktop.IBus.session.*.service %python3_sitearch/gi/overrides/__pycache__/*.py* %python3_sitearch/gi/overrides/IBus.py # ibus owns xinput.d because gnome does not like to depend on imsettings. @@ -517,6 +522,11 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Fri Feb 11 2022 Takao Fujiwara - 1.5.25-10 +- Do not mkdir abstract unix socket +- Fix IBus.key_event_from_string +- Add systemd unit file + * Thu Feb 03 2022 Takao Fujiwara - 1.5.25-9 - Change XKB layout string color in panel - Add Ctrl-semicolon to Emoji shortcut key From a902aab7a97e90bce1b3f6a450c82f125d7e910b Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Feb 21 2022 12:27:54 +0000 Subject: [PATCH 5/10] Fix forwarding keycode in GTK4 --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index cb688e1..80550b0 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1926,9 +1926,9 @@ index 00000000..76444dbd -- 2.33.1 -From 9a87a78549cb938c4810bcd311dd36823afd0fcd Mon Sep 17 00:00:00 2001 +From b5423f0cff78e627fec12378bfcc70efa79e9379 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Sat, 12 Feb 2022 10:50:54 +0900 +Date: Thu, 17 Feb 2022 20:15:38 +0900 Subject: [PATCH] src/services: Add org.freedesktop.IBus.session.generic.service Move bus/*.service.in & src/*.service.in into bus/services @@ -1988,7 +1988,7 @@ index 4383a874..e173ee25 100644 -include $(top_srcdir)/git.mk diff --git a/bus/services/Makefile.am b/bus/services/Makefile.am new file mode 100644 -index 00000000..53c21f58 +index 00000000..9cc42153 --- /dev/null +++ b/bus/services/Makefile.am @@ -0,0 +1,68 @@ @@ -2016,11 +2016,11 @@ index 00000000..53c21f58 + +NULL = + -+# Originally this file was added for GNOME but seems not to be used -+# at present. ++# Originally this D-Bus service file was added for GNOME but seems not to ++# be used at present. +# -+# TODO: Check if flatpack uses this file and we could rename -+# org.freedesktop.IBus.service to org.freedesktop.IBus.DBus.GNOME.service ++# TODO: Check if flatpack uses this file and we could delete ++# org.freedesktop.IBus.service file in the future. +dbusservice_in_files = org.freedesktop.IBus.service.in +dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) +dbusservicedir=${datadir}/dbus-1/services @@ -2230,9 +2230,51 @@ index bbaa6c90..578694b5 100644 -- 2.33.1 -From e325fc21b492eee83cb93712472495059395dc7b Mon Sep 17 00:00:00 2001 +From 5cfe838715097d61b50da55f80bcff2c698ca885 Mon Sep 17 00:00:00 2001 +From: Changwoo Ryu +Date: Fri, 18 Feb 2022 09:07:02 +0900 +Subject: [PATCH] client/gtk2/ibusimcontext: Fix forward key keycode for GTK4 + +When a keycode is provided (!= 0) for a forwarded key event, convert it to a +GTK keycode before passing it to gtk_im_context_filter_key(). + +Also free GdkKeymapKey after gdk_display_map_keyval() is called. + +BUG=https://github.com/ibus/ibus/issues/2380 +BUG=https://github.com/ibus/ibus/issues/2382 +--- + client/gtk2/ibusimcontext.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c +index c2df3a87..a5e5e792 100644 +--- a/client/gtk2/ibusimcontext.c ++++ b/client/gtk2/ibusimcontext.c +@@ -1945,7 +1945,9 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, + #if GTK_CHECK_VERSION (3, 98, 4) + int group = 0; + g_return_if_fail (GTK_IS_IM_CONTEXT (ibusimcontext)); +- if (keycode == 0 && ibusimcontext->client_window) { ++ if (keycode != 0) { ++ keycode += 8; // to GTK keycode ++ } else if (ibusimcontext->client_window) { + GdkDisplay *display = + gtk_widget_get_display (ibusimcontext->client_window); + GdkKeymapKey *keys = NULL; +@@ -1953,6 +1955,7 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, + if (gdk_display_map_keyval (display, keyval, &keys, &n_keys)) { + keycode = keys->keycode; + group = keys->group; ++ g_free (keys); + } else { + g_warning ("Failed to parse keycode from keyval %x", keyval); + } +-- +2.33.1 + +From a82bda58a45470c4be0f3db21eaddc73a230807f Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Sat, 12 Feb 2022 11:02:29 +0900 +Date: Fri, 18 Feb 2022 12:04:09 +0900 Subject: [PATCH] src/tests: Fix typos - test_metas_in location diff --git a/ibus.spec b/ibus.spec index e6c493f..0d18658 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.25 -Release: 10%{?dist} +Release: 11%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -522,6 +522,9 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Mon Feb 21 2022 Takao Fujiwara - 1.5.25-11 +- Fix forwarding keycode in GTK4 + * Fri Feb 11 2022 Takao Fujiwara - 1.5.25-10 - Do not mkdir abstract unix socket - Fix IBus.key_event_from_string From 9dd3ddc8541465d34470e1dddc75f1349c18d19b Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Mar 01 2022 11:32:58 +0000 Subject: [PATCH 6/10] Fix algorithm dead keys --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index 80550b0..523f457 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -2343,3 +2343,280 @@ index fa0c9b40..1b815345 100644 -- 2.33.1 +From 19377ad22d8145ea431e5de51f047061c98f8d21 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Tue, 1 Mar 2022 18:26:21 +0900 +Subject: [PATCH] src/ibuscompose: Check algorithm dead key by 9 length + +This change fixes the D-Bus timeout by a long compose preedit text. +check_normalize_nfc() calculates the factorical of the compse preedit +length and assigne the value to an INT variable and it could excceed +the MAX_INT. +Probably I think the length of the compose algorizhm dead key would be +enough 9. I.e. 9! == 46320 <= SHRT_MAX == 32767 + +BUG=https://github.com/ibus/ibus/issues/2385 +--- + src/ibuscomposetable.c | 35 +++++++++++++++++++++++------------ + 1 file changed, 23 insertions(+), 12 deletions(-) + +diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c +index 250e0139..387a24a8 100644 +--- a/src/ibuscomposetable.c ++++ b/src/ibuscomposetable.c +@@ -1,7 +1,7 @@ + /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ + /* ibus - The Input Bus + * Copyright (C) 2013-2014 Peng Huang +- * Copyright (C) 2013-2021 Takao Fujiwara ++ * Copyright (C) 2013-2022 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -46,6 +46,7 @@ + #define IBUS_COMPOSE_TABLE_MAGIC "IBusComposeTable" + #define IBUS_COMPOSE_TABLE_VERSION (4) + #define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale" ++#define IBUS_MAX_COMPOSE_ALGORITHM_LEN 9 + + typedef struct { + gunichar *sequence; +@@ -1659,7 +1660,7 @@ ibus_compose_table_compact_check (const IBusComposeTableCompactEx + static gboolean + check_normalize_nfc (gunichar* combination_buffer, int n_compose) + { +- gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_LEN]; ++ gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_ALGORITHM_LEN + 1]; + char *combination_utf8_temp = NULL; + char *nfc_temp = NULL; + int n_combinations; +@@ -1682,7 +1683,7 @@ check_normalize_nfc (gunichar* combination_buffer, int n_compose) + + memcpy (combination_buffer_temp, + combination_buffer, +- IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); ++ IBUS_MAX_COMPOSE_ALGORITHM_LEN * sizeof (gunichar) ); + + for (i = 0; i < n_combinations; i++ ) { + g_unicode_canonical_ordering (combination_buffer_temp, n_compose); +@@ -1694,7 +1695,7 @@ check_normalize_nfc (gunichar* combination_buffer, int n_compose) + if (g_utf8_strlen (nfc_temp, -1) == 1) { + memcpy (combination_buffer, + combination_buffer_temp, +- IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); ++ IBUS_MAX_COMPOSE_ALGORITHM_LEN * sizeof (gunichar) ); + + g_free (combination_utf8_temp); + g_free (nfc_temp); +@@ -1708,14 +1709,14 @@ check_normalize_nfc (gunichar* combination_buffer, int n_compose) + if (n_compose > 2) { + int j = i % (n_compose - 1) + 1; + int k = (i+1) % (n_compose - 1) + 1; +- if (j >= IBUS_MAX_COMPOSE_LEN) { +- g_warning ("j >= IBUS_MAX_COMPOSE_LEN for " \ +- "combination_buffer_temp"); ++ if (j >= IBUS_MAX_COMPOSE_ALGORITHM_LEN) { ++ g_warning ("j >= %d for combination_buffer_temp", ++ IBUS_MAX_COMPOSE_ALGORITHM_LEN); + break; + } +- if (k >= IBUS_MAX_COMPOSE_LEN) { +- g_warning ("k >= IBUS_MAX_COMPOSE_LEN for " \ +- "combination_buffer_temp"); ++ if (k >= IBUS_MAX_COMPOSE_ALGORITHM_LEN) { ++ g_warning ("k >= %d for combination_buffer_temp", ++ IBUS_MAX_COMPOSE_ALGORITHM_LEN); + break; + } + temp_swap = combination_buffer_temp[j]; +@@ -1737,13 +1738,23 @@ ibus_check_algorithmically (const guint16 *compose_buffer, + + { + int i; +- gunichar combination_buffer[IBUS_MAX_COMPOSE_LEN]; ++ gunichar combination_buffer[IBUS_MAX_COMPOSE_ALGORITHM_LEN + 1]; + char *combination_utf8, *nfc; + + if (output_char) + *output_char = 0; + +- if (n_compose >= IBUS_MAX_COMPOSE_LEN) ++ /* Check the IBUS_MAX_COMPOSE_ALGORITHM_LEN length only here instead of ++ * IBUS_MAX_COMPOSE_LEN length. ++ * Because this API calls check_normalize_nfc() which calculates the factorial ++ * of `n_compose` and assigns the value to `n_combinations`. ++ * I.e. 9! == 40320 <= SHRT_MAX == 32767 ++ * The factorial of exceeding INT_MAX spends a long time in check_normalize_nfc() ++ * and causes a D-Bus timeout between GTK clients and IBusEngineSimple. ++ * Currenlty IBUS_MAX_COMPOSE_LEN is much larger and supports the long compose ++ * sequence however the max 9 would be enough for this mechanical compose. ++ */ ++ if (n_compose > IBUS_MAX_COMPOSE_ALGORITHM_LEN) + return FALSE; + + for (i = 0; i < n_compose && IS_DEAD_KEY (compose_buffer[i]); i++) +-- +2.34.1 + +From df664b1f18a9c630ccd884f8ff698abf6cbb1578 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Tue, 1 Mar 2022 19:23:25 +0900 +Subject: [PATCH] src/ibusenginesimple: Support GTK4 coompose file + +Load $XDG_CONFIG_HOME/gtk-4.0/Compose +--- + src/ibusenginesimple.c | 27 +++++++++++++++------------ + 1 file changed, 15 insertions(+), 12 deletions(-) + +diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c +index a80e41a5..c57a3ea5 100644 +--- a/src/ibusenginesimple.c ++++ b/src/ibusenginesimple.c +@@ -1448,8 +1448,16 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, + g_free (path); + return retval; + } +- g_free (path); +- path = NULL; ++ g_clear_pointer(&path, g_free); ++ ++ path = g_build_filename (g_get_user_config_dir (), ++ "gtk-4.0", "Compose", NULL); ++ if (g_file_test (path, G_FILE_TEST_EXISTS)) { ++ ibus_engine_simple_add_compose_file (simple, path); ++ g_free (path); ++ return retval; ++ } ++ g_clear_pointer(&path, g_free); + + path = g_build_filename (g_get_user_config_dir (), + "gtk-3.0", "Compose", NULL); +@@ -1458,8 +1466,7 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, + g_free (path); + return retval; + } +- g_free (path); +- path = NULL; ++ g_clear_pointer(&path, g_free); + + home = g_get_home_dir (); + if (home == NULL) +@@ -1471,8 +1478,7 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, + g_free (path); + return retval; + } +- g_free (path); +- path = NULL; ++ g_clear_pointer(&path, g_free); + + #if GLIB_CHECK_VERSION (2, 58, 0) + langs = g_get_language_names_with_category ("LC_CTYPE"); +@@ -1508,8 +1514,7 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, + + if (g_file_test (path, G_FILE_TEST_EXISTS)) + break; +- g_free (path); +- path = NULL; ++ g_clear_pointer(&path, g_free); + } + + #if !GLIB_CHECK_VERSION (2, 58, 0) +@@ -1518,15 +1523,13 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, + + if (path != NULL) + ibus_engine_simple_add_compose_file (simple, path); +- g_free (path); +- path = NULL; ++ g_clear_pointer(&path, g_free); + } else { + path = g_build_filename (X11_DATADIR, locale, "Compose", NULL); + do { + if (g_file_test (path, G_FILE_TEST_EXISTS)) + break; +- g_free (path); +- path = NULL; ++ g_clear_pointer(&path, g_free); + } while (0); + if (path == NULL) + return retval; +-- +2.34.1 + +From faf9f0bbb6edf6ed71bba9dcb314493f6b0276ea Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Tue, 1 Mar 2022 19:44:17 +0900 +Subject: [PATCH] client/gtk2: Revert CCedilla change for pt-BR + +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 + +BUG=chromium-os:11421 +BUG=http://codereview.appspot.com/3989060 +--- + client/gtk2/ibusimcontext.c | 33 +-------------------------------- + 1 file changed, 1 insertion(+), 32 deletions(-) + +diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c +index a5e5e792..e314ae98 100644 +--- a/client/gtk2/ibusimcontext.c ++++ b/client/gtk2/ibusimcontext.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. + * + * 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); + } + +-/* 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)); + + g_signal_connect (ibusimcontext->slave, + "commit", +-- +2.34.1 + diff --git a/ibus.spec b/ibus.spec index 0d18658..7ef6f72 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.25 -Release: 11%{?dist} +Release: 12%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -522,6 +522,9 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Tue Mar 01 2022 Takao Fujiwara - 1.5.25-12 +- Fix algorithm dead keys + * Mon Feb 21 2022 Takao Fujiwara - 1.5.25-11 - Fix forwarding keycode in GTK4 From 28d87421a87997ae5dfce439abc2e944d4f1f72b Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Mar 04 2022 12:15:47 +0000 Subject: [PATCH 7/10] Check XDG_SESSION_DESKTOP for Plasma desktop --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index 523f457..36d5f6d 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -2542,6 +2542,60 @@ index a80e41a5..c57a3ea5 100644 -- 2.34.1 +From 5ad3d8d5296cd337d3b41730406680eb9b250f8f Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 4 Mar 2022 20:50:08 +0900 +Subject: [PATCH] ui/gtk3: Use XDG_SESSION_DESKTOP for Plasma desktop + +If ibus-dameon is launched from systemd, XDG_CURRENT_DESKTOP +environment variable could be set after ibus-dameon would be +launched and XDG_CURRENT_DESKTOP could be "(null)". +But XDG_SESSION_DESKTOP can be set with systemd's PAM. +--- + ui/gtk3/panel.vala | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala +index ab2005d7..bfd6ef56 100644 +--- a/ui/gtk3/panel.vala ++++ b/ui/gtk3/panel.vala +@@ -3,7 +3,7 @@ + * ibus - The Input Bus + * + * Copyright(c) 2011-2014 Peng Huang +- * Copyright(c) 2015-2020 Takao Fujwiara ++ * Copyright(c) 2015-2022 Takao Fujwiara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -260,8 +260,23 @@ class Panel : IBus.PanelService { + + #if INDICATOR + private static bool is_kde() { +- if (Environment.get_variable("XDG_CURRENT_DESKTOP") == "KDE") ++ unowned string? desktop = ++ Environment.get_variable("XDG_CURRENT_DESKTOP"); ++ if (desktop == "KDE") + return true; ++ /* If ibus-dameon is launched from systemd, XDG_CURRENT_DESKTOP ++ * environment variable could be set after ibus-dameon would be ++ * launched and XDG_CURRENT_DESKTOP could be "(null)". ++ * But XDG_SESSION_DESKTOP can be set with systemd's PAM. ++ */ ++ if (desktop == null || desktop == "(null)") ++ desktop = Environment.get_variable("XDG_SESSION_DESKTOP"); ++ if (desktop == "plasma") ++ return true; ++ if (desktop == null) { ++ warning ("XDG_CURRENT_DESKTOP is not exported in your desktop " + ++ "session."); ++ } + warning ("If you launch KDE5 on xterm, " + + "export XDG_CURRENT_DESKTOP=KDE before launch KDE5."); + return false; +-- +2.34.1 + From faf9f0bbb6edf6ed71bba9dcb314493f6b0276ea Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Tue, 1 Mar 2022 19:44:17 +0900 diff --git a/ibus.spec b/ibus.spec index 7ef6f72..1551314 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.25 -Release: 12%{?dist} +Release: 13%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -522,6 +522,9 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Fri Mar 04 2022 Takao Fujiwara - 1.5.25-13 +- Check XDG_SESSION_DESKTOP for Plasma desktop + * Tue Mar 01 2022 Takao Fujiwara - 1.5.25-12 - Fix algorithm dead keys From 0829fa055cbb2f3b69cfe8350b7c9a923c84c04f Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Mar 14 2022 05:40:28 +0000 Subject: [PATCH 8/10] Delete upstreamed ibus-HEAD.patch --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch deleted file mode 100644 index 36d5f6d..0000000 --- a/ibus-HEAD.patch +++ /dev/null @@ -1,2676 +0,0 @@ -From 571e3b6e4f386abf12d3db70b9468e092c8d72bd Mon Sep 17 00:00:00 2001 -From: Alynx Zhou -Date: Tue, 24 Aug 2021 10:12:52 +0800 -Subject: [PATCH] client/gtk2/ibusimcontext: Fix wrong cursor location in gtk3 - apps - -If you apply this patch in your tarball, please also apply this to -client/gtk3/ibusimcontext.c besides client/gtk2/ibusimcontext.c . - -BUG=https://github.com/ibus/ibus/issues/2337 ---- - client/gtk2/ibusimcontext.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index da9a402f..b1ccede9 100644 ---- a/client/gtk2/ibusimcontext.c -+++ b/client/gtk2/ibusimcontext.c -@@ -1497,7 +1497,10 @@ _set_cursor_location_internal (IBusIMContext *ibusimcontext) - - #if GTK_CHECK_VERSION (3, 98, 4) - #elif GTK_CHECK_VERSION (2, 91, 0) -- area.y += gdk_window_get_height (ibusimcontext->client_window); -+ if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) { -+ area.x = 0; -+ area.y += gdk_window_get_height (ibusimcontext->client_window); -+ } - #else - if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) { - gint w, h; --- -2.31.1 - -From 5487a6baa4b22605ba8197ca1a0fa43c91d57786 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Mon, 6 Sep 2021 20:23:59 +0900 -Subject: [PATCH] client/gtk2/ibusimcontext: Implement clear preedit for GTK4 - -IBus IM module uses synchornized key processes for GTK4 and the timing -of the GTK reset siginal may work with focus-in/out between windows. -(I don't test GTK4 firefox and terminal yet and the verification is not -completed.) -So ibus_im_context_clear_preedit_text() is now called with the GTK4 reset -siginal. -ibus_im_context_clear_preedit_text() works with ibus-setup-anthy -> -"Conversion" tab -> "Behavior on Focus Out" pull down menu. - -BUG=https://github.com/ibus/ibus/issues/2334 ---- - client/gtk2/ibusimcontext.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index b1ccede9..e12be45d 100644 ---- a/client/gtk2/ibusimcontext.c -+++ b/client/gtk2/ibusimcontext.c -@@ -1270,6 +1270,8 @@ ibus_im_context_reset (GtkIMContext *context) - * IBus uses button-press-event instead until GTK is fixed. - * https://gitlab.gnome.org/GNOME/gtk/issues/1534 - */ -+ if (_use_sync_mode) -+ ibus_im_context_clear_preedit_text (ibusimcontext); - ibus_input_context_reset (ibusimcontext->ibuscontext); - } - gtk_im_context_reset (ibusimcontext->slave); -@@ -1383,7 +1385,7 @@ ibus_im_context_set_client_window (GtkIMContext *context, - - if (ibusimcontext->client_window) { - #if !GTK_CHECK_VERSION (3, 98, 4) -- if (ibusimcontext->use_button_press_event) -+ if (ibusimcontext->use_button_press_event && !_use_sync_mode) - _connect_button_press_event (ibusimcontext, FALSE); - #endif - g_object_unref (ibusimcontext->client_window); -@@ -1393,7 +1395,7 @@ ibus_im_context_set_client_window (GtkIMContext *context, - if (client != NULL) { - ibusimcontext->client_window = g_object_ref (client); - #if !GTK_CHECK_VERSION (3, 98, 4) -- if (!ibusimcontext->use_button_press_event) -+ if (!ibusimcontext->use_button_press_event && !_use_sync_mode) - _connect_button_press_event (ibusimcontext, TRUE); - #endif - } -@@ -1994,7 +1996,8 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, - - #if !GTK_CHECK_VERSION (3, 98, 4) - if (!ibusimcontext->use_button_press_event && -- mode == IBUS_ENGINE_PREEDIT_COMMIT) { -+ mode == IBUS_ENGINE_PREEDIT_COMMIT && -+ !_use_sync_mode) { - if (ibusimcontext->client_window) { - _connect_button_press_event (ibusimcontext, TRUE); - } --- -2.28.0 - -From 4957d1468db4fc5ed30c3ae1f2afac9e51b329d6 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Mon, 6 Sep 2021 20:25:52 +0900 -Subject: [PATCH] client/gtk2/ibusimcontext: Calculate keycode from keysym in - GTK3 forward-key-event - -IBus GTK3 mode also calculates keycode from keysym if keycode == 0 -with forward-key-event signal to follow GTK4. ---- - client/gtk2/ibusimcontext.c | 22 ++++++++++++++++++---- - 1 file changed, 18 insertions(+), 4 deletions(-) - -diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index e12be45d..b1424e87 100644 ---- a/client/gtk2/ibusimcontext.c -+++ b/client/gtk2/ibusimcontext.c -@@ -1939,13 +1939,16 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, - int group = 0; - g_return_if_fail (GTK_IS_IM_CONTEXT (ibusimcontext)); - if (keycode == 0 && ibusimcontext->client_window) { -- GdkDisplay *display = gtk_widget_get_display (ibusimcontext->client_window); -+ GdkDisplay *display = -+ gtk_widget_get_display (ibusimcontext->client_window); - GdkKeymapKey *keys = NULL; - gint n_keys = 0; -- if (!gdk_display_map_keyval (display, keyval, &keys, &n_keys)) -+ if (gdk_display_map_keyval (display, keyval, &keys, &n_keys)) { -+ keycode = keys->keycode; -+ group = keys->group; -+ } else { - g_warning ("Failed to parse keycode from keyval %x", keyval); -- keycode = keys->keycode; -- group = keys->group; -+ } - } - gtk_im_context_filter_key ( - GTK_IM_CONTEXT (ibusimcontext), -@@ -1957,6 +1960,17 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, - (GdkModifierType)state, - group); - #else -+ if (keycode == 0 && ibusimcontext->client_window) { -+ GdkDisplay *display = -+ gdk_window_get_display (ibusimcontext->client_window); -+ GdkKeymap *keymap = gdk_keymap_get_for_display (display); -+ GdkKeymapKey *keys = NULL; -+ gint n_keys = 0; -+ if (gdk_keymap_get_entries_for_keyval (keymap, keyval, &keys, &n_keys)) -+ keycode = keys->keycode; -+ else -+ g_warning ("Failed to parse keycode from keyval %x", keyval); -+ } - GdkEventKey *event = _create_gdk_event (ibusimcontext, keyval, keycode, state); - gdk_event_put ((GdkEvent *)event); - gdk_event_free ((GdkEvent *)event); --- -2.28.0 - -From fbea5441fc53ae1d5533bed1ee53009141cf905a Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 10 Sep 2021 00:09:26 +0900 -Subject: [PATCH] Fix build errors in Ubuntu focal - -- Ubuntu focal uses glib 2.64.6 which does not include errno.h - so config.h includes errno.h as the workaround. -- make autogen.sh not to delete dist files in Travis -- Call $(PYTHON) for gensimple.py for Ubuntu python3 -- Add a code review in src/ibuscomposetable.c - -BUG=https://github.com/ibus/ibus/pull/2348 ---- - autogen.sh | 2 +- - configure.ac | 9 +++++++++ - engine/Makefile.am | 2 +- - src/ibuscomposetable.c | 4 ++++ - src/ibusregistry.c | 4 ++++ - src/ibusshare.c | 3 +++ - 6 files changed, 26 insertions(+), 2 deletions(-) - -diff --git a/autogen.sh b/autogen.sh -index 693a2740..ea633e06 100755 ---- a/autogen.sh -+++ b/autogen.sh -@@ -53,4 +53,4 @@ ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" REQUIRED_AUTOMAKE_VERSION=1.11 CFLAGS="$CFL - echo "rm $f" - rm $f - done --} -+} || : -diff --git a/configure.ac b/configure.ac -index 29f8b3db..ce096ad3 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -162,6 +162,15 @@ PKG_CHECK_MODULES(GIO2, [ - PKG_CHECK_MODULES(GTHREAD2, [ - gthread-2.0 >= glib_required_version - ]) -+PKG_CHECK_EXISTS( -+ [glib-2.0 >= 2.65.0], -+ [AC_DEFINE(GLIB2_EMBED_ERRNO_H, TRUE, [glib2 include errno.h])] -+) -+AH_BOTTOM([ -+#ifndef GLIB2_EMBED_ERRNO_H -+# include -+#endif -+]) - - # --disable-tests option. - AC_ARG_ENABLE(tests, -diff --git a/engine/Makefile.am b/engine/Makefile.am -index 84bc7f6c..03867f52 100644 ---- a/engine/Makefile.am -+++ b/engine/Makefile.am -@@ -99,7 +99,7 @@ simple.xml: simple.xml.in - mv $@.tmp $@ - - simple.xml.in: -- $(srcdir)/gensimple.py \ -+ $(PYTHON) $(srcdir)/gensimple.py \ - --input=$(XKBCONFIG_BASE)/rules/evdev.xml \ - --output=$@ \ - --version=$(VERSION).`date '+%Y%m%d'` \ -diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c -index d4184d30..b76464bc 100644 ---- a/src/ibuscomposetable.c -+++ b/src/ibuscomposetable.c -@@ -18,6 +18,9 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -+#ifdef HAVE_CONFIG_H -+#include -+#endif - - #include - #include -@@ -1606,6 +1609,7 @@ ibus_compose_table_compact_check (const IBusComposeTableCompactEx - row_stride = i + 1; - - if (seq_index[i + 1] - seq_index[i] > 0) { -+ g_assert (row_stride); - seq = bsearch (compose_buffer + 1, - table->data + seq_index[i], - (seq_index[i + 1] - seq_index[i]) / row_stride, -diff --git a/src/ibusregistry.c b/src/ibusregistry.c -index 23c5ca1b..962afb20 100644 ---- a/src/ibusregistry.c -+++ b/src/ibusregistry.c -@@ -20,6 +20,10 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ - #include - #include - #include -diff --git a/src/ibusshare.c b/src/ibusshare.c -index 8974511a..0c0bda10 100644 ---- a/src/ibusshare.c -+++ b/src/ibusshare.c -@@ -20,6 +20,9 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -+#ifdef HAVE_CONFIG_H -+#include -+#endif - - #include "ibusshare.h" - #include --- -2.33.1 - -From 943d37444d9cc0881cb5fff87bdd4b9efd5abdb4 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Mon, 9 Aug 2021 12:49:15 +0900 -Subject: [PATCH] client/gtk2/ibusimcontext: Fix a key event loop with - forwarding keys. - -_ibus_context_forward_key_event_cb() caused a key event loop in -_key_snooper_cb() with key release events. ---- - client/gtk2/ibusimcontext.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index da9a402f..e66125df 100644 ---- a/client/gtk2/ibusimcontext.c -+++ b/client/gtk2/ibusimcontext.c -@@ -366,6 +366,10 @@ ibus_im_context_commit_event (IBusIMContext *ibusimcontext, - g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text); - g_object_unref (text); - _request_surrounding_text (ibusimcontext); -+#if !GTK_CHECK_VERSION (3, 98, 4) -+ /* Avoid a loop with _ibus_context_forward_key_event_cb() */ -+ event->state |= IBUS_HANDLED_MASK; -+#endif - return TRUE; - } - return FALSE; -@@ -643,12 +647,15 @@ _key_snooper_cb (GtkWidget *widget, - - } while (0); - -- if (ibusimcontext != NULL) { -+ if (ibusimcontext != NULL && event->type == GDK_KEY_PRESS) { - /* "retrieve-surrounding" signal sometimes calls unref by - * gtk_im_multicontext_get_slave() because priv->context_id is not - * the latest than global_context_id in GtkIMMulticontext. - * Since _focus_im_context is gotten by the focus_in event, - * it would be good to call ref here. -+ * -+ * Most release key events would be redundant from -+ * _ibus_context_forward_key_event_cb (). - */ - g_object_ref (ibusimcontext); - _request_surrounding_text (ibusimcontext); -@@ -657,7 +664,7 @@ _key_snooper_cb (GtkWidget *widget, - - retval = _process_key_event (ibuscontext, event, ibusimcontext); - -- if (ibusimcontext != NULL) { -+ if (ibusimcontext != NULL && event->type == GDK_KEY_PRESS) { - /* unref ibusimcontext could call ibus_im_context_finalize here - * because "retrieve-surrounding" signal could call unref. - */ --- -2.28.0 - -From 179ebddf4dbde1cef1cea2df4e659cf4940d1a30 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 27 Aug 2021 20:05:02 +0900 -Subject: [PATCH] src/tests: Add --screendump option in - ibus-desktop-testing-runner - -The screendump is useful in CI to if check gnome-shell-extension-no-overview -works. -Also add ibus-desktop-testing-autostart to get the debug info in CI. -You can copy ibus-desktop-testing.desktop to $HOME/.config/autostart -if CI fails. ---- - src/tests/Makefile.am | 11 +++++ - src/tests/ibus-desktop-testing-autostart | 55 +++++++++++++++++++++++ - src/tests/ibus-desktop-testing-runner.in | 20 +++++++-- - src/tests/ibus-desktop-testing.desktop.in | 11 +++++ - 4 files changed, 93 insertions(+), 4 deletions(-) - create mode 100755 src/tests/ibus-desktop-testing-autostart - create mode 100644 src/tests/ibus-desktop-testing.desktop.in - -diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am -index 13c06eb4..7d00f236 100644 ---- a/src/tests/Makefile.am -+++ b/src/tests/Makefile.am -@@ -96,6 +96,7 @@ test_sourcesdir = $(datadir)/installed-tests/ibus - CLEANFILES += \ - $(test_metas) \ - ibus-desktop-testing-runner \ -+ org.freedesktop.IBus.Desktop.Testing.desktop \ - $(NULL) - - test_execs_PROGRAMS = $(TESTS) -@@ -106,6 +107,14 @@ CLEANFILES += \ - $(NULL) - endif - test_execsdir = $(libexecdir)/installed-tests/ibus -+libexec_SCRIPTS = ibus-desktop-testing-autostart -+ -+test_frame_DATA = org.freedesktop.IBus.Desktop.Testing.desktop -+test_framedir = $(pkgdatadir)/tests -+org.freedesktop.IBus.Desktop.Testing.desktop: ibus-desktop-testing.desktop.in -+ $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|g" \ -+ $< > $@.tmp && \ -+ mv $@.tmp $@ - endif - - $(test_metas): $(test_metas_in) $(test_programs) -@@ -133,6 +142,8 @@ EXTRA_DIST = \ - ibus-compose.emoji \ - ibus-compose.env \ - ibus-compose-locales.in \ -+ ibus-desktop-testing.desktop.in \ -+ ibus-desktop-testing-autostart \ - ibus-desktop-testing-runner.in \ - $(NULL) - -diff --git a/src/tests/ibus-desktop-testing-autostart b/src/tests/ibus-desktop-testing-autostart -new file mode 100755 -index 00000000..da22b64e ---- /dev/null -+++ b/src/tests/ibus-desktop-testing-autostart -@@ -0,0 +1,55 @@ -+#!/bin/sh -+# -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- -+# vim:set noet ts=4: -+# -+# ibus - The Input Bus -+# -+# Copyright (c) 2021 Takao Fujiwara -+# Copyright (c) 2021 Red Hat, Inc. -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program; if not, write to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ -+TEST_LOG= -+COMMANDS=' -+id -+echo $DISPLAY -+pwd -+pstree -asp $$ -+gsettings list-recursively org.gnome.shell -+rpm -q gnome-shell-extension-no-overview gnome-shell gnome-session -+' -+ -+if [ $# -gt 0 ] ; then -+ TEST_LOG=$1 -+fi -+ -+run_test() -+{ -+while read cmd ; do -+ if [ x"$cmd" = x ] ; then -+ continue -+ fi -+ echo "# $cmd" -+ eval "$cmd" -+done << EOF_COMMANDS -+`echo "$COMMANDS"` -+EOF_COMMANDS -+} -+ -+if [ x"$TEST_LOG" = x ] ; then -+ run_test -+else -+ run_test 2>>$TEST_LOG 1>>$TEST_LOG -+fi -diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in -index c1016703..48528326 100755 ---- a/src/tests/ibus-desktop-testing-runner.in -+++ b/src/tests/ibus-desktop-testing-runner.in -@@ -36,13 +36,14 @@ - - - PROGNAME=`basename $0` --VERSION=0.2 -+VERSION=0.3 - DISPLAY=:99.0 - BUILDDIR="." - SRCDIR="." - TEST_LOG="test-suite.log" - TEST_LOG_STDOUT=0 - RESULT_LOG="" -+SCREEN_LOG="" - HAVE_GRAPHICS=1 - DESKTOP_COMMAND="dbus-launch --exit-with-session gnome-session" - PID_XORG=0 -@@ -90,14 +91,15 @@ usage() - "-T, --timeout=TIMEOUT Set timeout (default TIMEOUT is 300 sec).\n" \ - "-o, --output=OUTPUT_FILE OUtput the log to OUTPUT_FILE\n" \ - "-O, --result=RESULT_FILE OUtput the result to RESULT_FILE\n" \ -+"-S, --screendump=DUMP_FILE OUtput the screen to DUMP_FILE ('STDOUT' can be stdout)\n" \ - "" - } - - parse_args() - { - # This is GNU getopt. "sudo port getopt" in BSD? -- ARGS=`getopt -o hvb:s:cd:t:r:T:o:O: --long \ -- help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,timeout:,output:,result:\ -+ ARGS=`getopt -o hvb:s:cd:t:r:T:o:O:S: --long \ -+ help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,timeout:,output:,result:,screendump:\ - -- "$@"`; - eval set -- "$ARGS" - while [ 1 ] ; do -@@ -113,6 +115,7 @@ parse_args() - -T | --timeout ) TIMEOUT="$2"; shift 2;; - -o | --output ) TEST_LOG="$2"; shift 2;; - -O | --result ) RESULT_LOG="$2"; shift 2;; -+ -S | --screendump ) SCREEN_LOG="$2"; shift 2;; - -- ) shift; break;; - * ) usage; exit 1;; - esac -@@ -259,6 +262,7 @@ run_desktop() - { - echo "$DESKTOP_COMMAND" | grep gnome-session > /dev/null - HAS_GNOME=$? -+ export DISPLAY=$DISPLAY - if test $HAVE_GRAPHICS -eq 1 ; then - /usr/libexec/Xorg.wrap -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf -configdir . $DISPLAY & - else -@@ -266,7 +270,6 @@ run_desktop() - fi - PID_XORG=$! - sleep 1 -- export DISPLAY=$DISPLAY - # init_gnome need to be called with $DISPLAY before gnome-session is called - if [ $HAS_GNOME -eq 0 ] ; then - init_gnome -@@ -454,6 +457,15 @@ main() - init_desktop - run_dbus_daemon 2>>$TEST_LOG 1>>$TEST_LOG - run_desktop 2>>$TEST_LOG 1>>$TEST_LOG -+ if [ x"$SCREEN_LOG" != x ] ; then -+ SCREEN_PNG="`date '+%Y%m%d%H%M%S'`.png" -+ gnome-screenshot --file=$SCREEN_PNG -+ if [ x"$SCREEN_LOG" = xSTDOUT ] ; then -+ base64 $SCREEN_PNG -+ else -+ base64 $SCREEN_PNG > $SCREEN_LOG -+ fi -+ fi - run_test_suite - finit - } -diff --git a/src/tests/ibus-desktop-testing.desktop.in b/src/tests/ibus-desktop-testing.desktop.in -new file mode 100644 -index 00000000..fa0c9b40 ---- /dev/null -+++ b/src/tests/ibus-desktop-testing.desktop.in -@@ -0,0 +1,11 @@ -+[Desktop Entry] -+Name=IBus Desktop Testing Runner -+GenericName=Input Method Desktop Testing Runner -+Comment=Test plugin for IBus Desktop Testing -+Exec=@ibexecdir@/ibus-desktop-testing-autostart /var/tmp/ibus-ci-autostart.log -+Terminal=false -+Type=Application -+Encoding=UTF-8 -+Icon=ibus -+Categories=System -+Keywords=im; --- -2.28.0 - -From acc5570511698c7b5cc037eb81be2c4be52a824f Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 29 Oct 2021 12:56:49 +0900 -Subject: [PATCH] ui/gtk3: Erase Emojier preedit/lookup popup between - applications - -It would be better to erase Emojier popup window when users change -the input focus between applications. But it hasn't been implemented -because the focus-out/in events also happen when the Emojier popup window -is launching or rebuilding to the category list in GNOME Wayland. -The focus-out/in events do not happen in Xorg desktops with the rebuilding -GUI because GTK popup window causes focus-in/out evnets in Wayland. - -Now I'm convinced with several issues and added a little complicated logic -to erase Emojier popup window with the focus changes between input contexts -to handle focus-in/out events in Wayland. - -BUG=rhbz#1942970 ---- - ui/gtk3/emojier.vala | 69 ++++++++++++++++++++++++++++++++++++--- - ui/gtk3/emojierapp.vala | 12 +++++-- - ui/gtk3/panelbinding.vala | 21 ++++++++++-- - 3 files changed, 94 insertions(+), 8 deletions(-) - -diff --git a/ui/gtk3/emojier.vala b/ui/gtk3/emojier.vala -index 9e6e9263..69fb8abe 100644 ---- a/ui/gtk3/emojier.vala -+++ b/ui/gtk3/emojier.vala -@@ -2,7 +2,7 @@ - * - * ibus - The Input Bus - * -- * Copyright (c) 2017-2019 Takao Fujiwara -+ * Copyright (c) 2017-2021 Takao Fujiwara - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -227,6 +227,8 @@ public class IBusEmojier : Gtk.ApplicationWindow { - BACKWARD, - } - -+ public bool is_wayland { get; set; } -+ - public const uint BUTTON_CLOSE_BUTTON = 1000; - - private const uint EMOJI_GRID_PAGE = 10; -@@ -317,15 +319,18 @@ public class IBusEmojier : Gtk.ApplicationWindow { - private Gdk.Rectangle m_cursor_location; - private bool m_is_up_side_down = false; - private uint m_redraw_window_id; -+ private bool m_rebuilding_gui = false; -+ private uint m_rebuilding_gui_timeout_id; - - public signal void candidate_clicked(uint index, uint button, uint state); - public signal void commit_text(string text); - public signal void cancel(); - -- public IBusEmojier() { -+ public IBusEmojier(bool is_wayland) { - GLib.Object( - type : Gtk.WindowType.POPUP - ); -+ this.is_wayland = is_wayland; - - // GLib.ActionEntry accepts const variables only. - var action = new GLib.SimpleAction.stateful( -@@ -1002,6 +1007,7 @@ public class IBusEmojier : Gtk.ApplicationWindow { - button.button_press_event.connect((w, e) => { - m_category_active_index = -1; - m_show_unicode = false; -+ start_rebuild_gui(false); - hide_candidate_panel(); - show_all(); - return true; -@@ -1458,6 +1464,7 @@ public class IBusEmojier : Gtk.ApplicationWindow { - show_emoji_for_category(m_backward); - show_candidate_panel(); - } else { -+ start_rebuild_gui(false); - hide_candidate_panel(); - show_all(); - } -@@ -1778,6 +1785,34 @@ public class IBusEmojier : Gtk.ApplicationWindow { - } - - -+ private void start_rebuild_gui(bool initial_launching) { -+ if (!this.is_wayland) -+ return; -+ if (!initial_launching && !base.get_visible()) -+ return; -+ if (initial_launching && base.get_visible()) -+ return; -+ if (m_rebuilding_gui_timeout_id != 0) { -+ GLib.Source.remove(m_rebuilding_gui_timeout_id); -+ m_rebuilding_gui_timeout_id = 0; -+ } -+ -+ m_rebuilding_gui = true; -+ m_rebuilding_gui_timeout_id = -+ GLib.Timeout.add_seconds(10, () => { -+ if (!m_rebuilding_gui) { -+ m_rebuilding_gui_timeout_id = 0; -+ return false; -+ } -+ warning("Rebuilding GUI is time out."); -+ m_rebuilding_gui = false; -+ m_rebuilding_gui_timeout_id = 0; -+ return false; -+ }, -+ GLib.Priority.DEFAULT_IDLE); -+ } -+ -+ - public bool has_variants(uint index, - bool need_commit_signal) { - if (index >= m_lookup_table.get_number_of_candidates()) -@@ -1880,12 +1915,17 @@ public class IBusEmojier : Gtk.ApplicationWindow { - m_show_unicode = false; - m_category_active_index = -1; - } -+ start_rebuild_gui(false); - hide_candidate_panel(); - return true; - } else if (m_backward_index >= 0 && m_backward != null) { -+ // Escape on Emoji variants window does not call focus-out events -+ // because hide() is not called here so start_rebuild_gui() -+ // is not called. - show_emoji_for_category(m_backward); - return true; - } else if (m_candidate_panel_is_visible && m_backward != null) { -+ start_rebuild_gui(false); - hide_candidate_panel(); - return true; - } -@@ -2218,7 +2258,7 @@ public class IBusEmojier : Gtk.ApplicationWindow { - - /* Some window managers, e.g. MATE, GNOME, Plasma desktops, - * does not give the keyboard focus when Emojier is lauched -- * twice with Ctrl-Shift-e via XIEvent, if present_with_time() -+ * twice with Ctrl-period via XIEvent, if present_with_time() - * is not applied. - * But XFCE4 desktop does not effect this bug. - * Seems this is caused by the window manager's focus stealing -@@ -2265,8 +2305,10 @@ public class IBusEmojier : Gtk.ApplicationWindow { - #endif - - -- /* override virtual functions */ -+ // override virtual functions - public override void show_all() { -+ // Ctrl-period, space keys causes focus-out/in events in GNOME Wayland. -+ start_rebuild_gui(true); - base.show_all(); - if (m_candidate_panel_mode) - show_candidate_panel(); -@@ -2416,6 +2458,17 @@ public class IBusEmojier : Gtk.ApplicationWindow { - } - - -+ public override bool focus_in_event(Gdk.EventFocus event) { -+ m_rebuilding_gui = false; -+ return base.focus_in_event(event); -+ } -+ -+ -+ public override bool focus_out_event(Gdk.EventFocus event) { -+ return base.focus_out_event(event); -+ } -+ -+ - public bool is_running() { - return m_is_running; - } -@@ -2511,6 +2564,14 @@ public class IBusEmojier : Gtk.ApplicationWindow { - } - - -+ public bool is_rebuilding_gui() { -+ /* The candidate window and preedit text should not be closed -+ * when the GUI is rebuilding. -+ */ -+ return m_rebuilding_gui; -+ } -+ -+ - public static bool has_loaded_emoji_dict() { - if (m_emoji_to_data_dict == null) - return false; -diff --git a/ui/gtk3/emojierapp.vala b/ui/gtk3/emojierapp.vala -index 783c611c..812356f0 100644 ---- a/ui/gtk3/emojierapp.vala -+++ b/ui/gtk3/emojierapp.vala -@@ -3,7 +3,7 @@ - * ibus - The Input Bus - * - * Copyright (c) 2017 Peng Wu -- * Copyright (c) 2017-2019 Takao Fujiwara -+ * Copyright (c) 2017-2021 Takao Fujiwara - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -208,7 +208,15 @@ public class EmojiApplication : Gtk.Application { - IBusEmojier.load_unicode_dict(); - - if (m_emojier == null) { -- m_emojier = new IBusEmojier(); -+ bool is_wayland = false; -+#if USE_GDK_WAYLAND -+ Type instance_type = Gdk.Display.get_default().get_type(); -+ Type wayland_type = typeof(GdkWayland.Display); -+ is_wayland = instance_type.is_a(wayland_type); -+#else -+ warning("Checking Wayland is disabled"); -+#endif -+ m_emojier = new IBusEmojier(is_wayland); - // For title handling in gnome-shell - add_window(m_emojier); - m_emojier.candidate_clicked.connect((i, b, s) => { -diff --git a/ui/gtk3/panelbinding.vala b/ui/gtk3/panelbinding.vala -index 861255b1..e63d93f2 100644 ---- a/ui/gtk3/panelbinding.vala -+++ b/ui/gtk3/panelbinding.vala -@@ -3,7 +3,7 @@ - * ibus - The Input Bus - * - * Copyright(c) 2018 Peng Huang -- * Copyright(c) 2018-2020 Takao Fujwiara -+ * Copyright(c) 2018-2021 Takao Fujwiara - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -799,6 +799,23 @@ class PanelBinding : IBus.PanelService { - - public override void focus_out(string input_context_path) { - m_current_context_path = ""; -+ /* Close emoji typing when the focus out happens but it's not a -+ * rebuilding GUI. -+ * Emojier rebuilding GUI happens when Escape key is pressed on -+ * Emojier candidate list and the rebuilding also causes focus-out/in -+ * events in GNOME Wayland but not Xorg desktops. -+ * The rebuilding GUI can be checked with m_emojier.is_rebuilding_gui() -+ * in Wayland. -+ * m_emojier.is_rebuilding_gui() always returns false in Xorg desktops -+ * since focus-out/in events does not happen. -+ */ -+ if (m_emojier != null && !m_emojier.is_rebuilding_gui()) { -+ m_preedit.reset(); -+ m_emojier.set_annotation(""); -+ if (m_wayland_lookup_table_is_visible) -+ hide_wayland_lookup_table(); -+ key_press_escape(); -+ } - } - - -@@ -822,7 +839,7 @@ class PanelBinding : IBus.PanelService { - m_loaded_unicode = true; - } - if (m_emojier == null) { -- m_emojier = new IBusEmojier(); -+ m_emojier = new IBusEmojier(m_is_wayland); - // For title handling in gnome-shell - m_application.add_window(m_emojier); - m_emojier.candidate_clicked.connect((i, b, s) => { --- -2.28.0 - -From 28acfd433b3df1673b7c7177915c027ce48c061e Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 5 Nov 2021 07:22:34 +0900 -Subject: [PATCH] ui/gtk2: Deprecate gettext.bind_textdomain_codeset() - since Python 3.8 - -setup/i18n.py is a symlink of ui/gtk2/i18n.py -env PYTHONWARNINGS='d' ibus-setup - -BUG=https://github.com/ibus/ibus/issues/2276 ---- - setup/i18n.py | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/setup/i18n.py b/setup/i18n.py -index 976d1aee..af14efc6 100644 ---- a/setup/i18n.py -+++ b/setup/i18n.py -@@ -3,7 +3,9 @@ - # ibus - The Input Bus - # - # Copyright(c) 2007-2015 Peng Huang -+# Copyright(c) 2012-2021 Takao Fujiwara - # Copyright(c) 2007-2015 Google, Inc. -+# Copyright(c) 2012-2021 Red Hat, Inc. - # - # This library is free software; you can redistribute it and/or - # modify it under the terms of the GNU Lesser General Public -@@ -23,12 +25,14 @@ - import locale - import gettext - import os -+import sys - - DOMAINNAME = "ibus10" - - _ = lambda a: gettext.dgettext(DOMAINNAME, a) - N_ = lambda a: a - -+PY3K = sys.version_info >= (3, 0) - LOCALEDIR = os.getenv("IBUS_LOCALEDIR") - - def init_textdomain(domainname): -@@ -42,7 +46,9 @@ def init_textdomain(domainname): - except AttributeError: - pass - gettext.bindtextdomain(domainname, LOCALEDIR) -- gettext.bind_textdomain_codeset(domainname, 'UTF-8') -+ # https://docs.python.org/3/library/gettext.html#gettext.lgettext -+ if not PY3K: -+ gettext.bind_textdomain_codeset(domainname, 'UTF-8') - - def gettext_engine_longname(engine): - name = engine.get_name() --- -2.33.1 - -From cfcc6f194cfc95ab0cf1b3b719d77321c249a83b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Na=C3=AFm=20Favier?= -Date: Tue, 16 Nov 2021 00:33:37 +0100 -Subject: [PATCH] src/ibuscomposetable: invalidate cache based on symlink - mtime too - -When the compose file is a symbolic link, take the link itself's -modification time into account (in addition to its target's) in -determining whether to invalidate the compose cache. - -This is useful e.g. on NixOS systems where the compose file might point -to a store path with an irrelevant modification time, and we want the -cache to expire when the symlink itself changes. - -BUG=https://github.com/ibus/ibus/pull/2362 ---- - src/ibuscomposetable.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c -index b76464bc..250e0139 100644 ---- a/src/ibuscomposetable.c -+++ b/src/ibuscomposetable.c -@@ -1040,10 +1040,14 @@ ibus_compose_table_load_cache (const gchar *compose_file) - if (!g_file_test (path, G_FILE_TEST_EXISTS)) - break; - -- if (g_stat (compose_file, &original_buf)) -- break; - if (g_stat (path, &cache_buf)) - break; -+ if (g_lstat (compose_file, &original_buf)) -+ break; -+ if (original_buf.st_mtime > cache_buf.st_mtime) -+ break; -+ if (g_stat (compose_file, &original_buf)) -+ break; - if (original_buf.st_mtime > cache_buf.st_mtime) - break; - if (!g_file_get_contents (path, &contents, &length, &error)) { --- -2.33.1 - -From 2bc47f09832073c87ccdf1060bd93ff95878685a Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 2 Dec 2021 23:52:36 +0900 -Subject: [PATCH] autogen: Delete gnome-autogen dependency - -You may like to call ./autogen.sh --enable-gtk-doc with your custom -configure options. -Also set SAVE_DIST_FILE=1 by default ---- - autogen.sh | 96 +++++++++++++++++++++++++++++++++---------------- - src/Makefile.am | 18 ++++++---- - 3 files changed, 80 insertions(+), 41 deletions(-) - -diff --git a/autogen.sh b/autogen.sh -index ea633e06..1acbf705 100755 ---- a/autogen.sh -+++ b/autogen.sh -@@ -1,22 +1,47 @@ - #!/bin/sh - # Run this to generate all the initial makefiles, etc. - --srcdir=`dirname $0` --test -z "$srcdir" && srcdir=. -- --PKG_NAME="ibus" --DIST_FILES=" --engine/simple.xml.in --src/ibusemojigen.h --src/ibusunicodegen.h --" -+: ${srcdir=$(dirname $0)} -+: ${srcdir:=.} -+: ${SAVE_DIST_FILES:=0} -+ -+olddir=$(pwd) -+# shellcheck disable=SC2016 -+PKG_NAME=$(autoconf --trace 'AC_INIT:$1' configure.ac) -+WANT_GTK_DOC=0 -+GCC_VERSION=$(gcc --version | head -1 | awk '{print $3}') -+GCC_MAJOR_VERSION=$(echo "$GCC_VERSION" | awk -F. '{print $1}') - FEDORA_PKG1='autoconf automake libtool gettext-devel' - FEDORA_PKG2='glib2-devel gtk2-devel gtk3-devel - wayland-devel' - FEDORA_PKG3='cldr-emoji-annotation iso-codes-devel unicode-emoji unicode-ucd - xkeyboard-config-devel' - --(test -z "$DISABLE_INSTALL_PKGS") && { -+CFLAGS=${CFLAGS-"-Wall -Wformat -Werror=format-security"} -+(test $GCC_MAJOR_VERSION -ge 10) && { -+ CFLAGS="$CFLAGS -fanalyzer -fsanitize=address -fsanitize=leak" -+ FEDORA_PKG1="$FEDORA_PKG1 libasan" -+} -+ -+cd "$srcdir" -+ -+(test -f configure.ac \ -+ && test -f README ) || { -+ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" -+ echo " top-level $PKG_NAME directory" -+ exit 1 -+} -+ -+(test $(grep -q "^GTK_DOC_CHECK" configure.ac)) || { -+ WANT_GTK_DOC=1 -+ FEDORA_PKG2="$FEDORA_PKG2 gtk-doc" -+} -+ -+(test -f ChangeLog) || { -+ touch ChangeLog -+} -+ -+(test "x$DISABLE_INSTALL_PKGS" = "x") && { - (test -f /etc/fedora-release ) && { - rpm -q $FEDORA_PKG1 || exit 1 - rpm -q $FEDORA_PKG2 || exit 1 -@@ -27,30 +52,39 @@ FEDORA_PKG3='cldr-emoji-annotation iso-codes-devel unicode-emoji unicode-ucd - } - } - --(test -f $srcdir/configure.ac \ -- && test -f $srcdir/README ) || { -- echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" -- echo " top-level $PKG_NAME directory" -- exit 1 --} -- --which gnome-autogen.sh || { -- echo "Not found gnome-autogen.sh. You may need to install gnome-common" -- exit 1 -+CONFIGFLAGS="$@" -+(test "$#" = 0 -a "x$NOCONFIGURE" = "x" ) && { -+ echo "*** WARNING: I am going to run 'configure' with no arguments." >&2 -+ echo "*** If you wish to pass any to it, please specify them on the" >&2 -+ echo "*** '$0' command line." >&2 -+ echo "" >&2 -+ (test $WANT_GTK_DOC -eq 1) && CONFIGFLAGS="--enable-gtk-doc $@" - } - --(test -f $srcdir/ChangeLog) || { -- touch $srcdir/ChangeLog --} -+(test $WANT_GTK_DOC -eq 1) && gtkdocize --copy - --CFLAGS=${CFLAGS-"-Wall -Wformat -Werror=format-security"} -+ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" REQUIRED_AUTOMAKE_VERSION=1.11 \ -+autoreconf --verbose --force --install || exit 1 - --# need --enable-gtk-doc for gnome-autogen.sh to make dist --ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" REQUIRED_AUTOMAKE_VERSION=1.11 CFLAGS="$CFLAGS" . gnome-autogen.sh "$@" -+cd "$olddir" -+(test "x$NOCONFIGURE" = "x" ) && { -+ echo "$srcdir/configure $CONFIGFLAGS" -+ $srcdir/configure $CONFIGFLAGS || exit 1 -+ (test "$1" = "--help" ) && { -+ exit 0 -+ } || { -+ echo "Now type 'make' to compile $PKG_NAME" || exit 1 -+ } -+} || { -+ echo "Skipping configure process." -+} - --(test -z "$SAVE_DIST_FILES") && { -- for f in $DIST_FILES ; do -- echo "rm $f" -- rm $f -- done -+cd "$srcdir" -+(test "x$SAVE_DIST_FILES" = "x0" ) && { -+ # rm engine/simple.xml.in src/ibusemojigen.h src/ibusunicodegen.h -+ for d in engine src; do -+ echo "make -C $d maintainer-clean-generic" -+ make -C $d maintainer-clean-generic -+ done - } || : -+cd "$olddir" -diff --git a/src/Makefile.am b/src/Makefile.am -index 742ee7d7..578694b5 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -3,7 +3,7 @@ - # ibus - The Input Bus - # - # Copyright (c) 2007-2015 Peng Huang --# Copyright (c) 2015-2020 Takao Fujiwara -+# Copyright (c) 2015-2021 Takao Fujiwara - # Copyright (c) 2007-2017 Red Hat, Inc. - # - # This library is free software; you can redistribute it and/or -@@ -296,8 +296,8 @@ dicts/emoji-%.dict: emoji-parser - echo "Skip $$plus_comment $@"; \ - fi; - --ibusemojigen.h: dicts/emoji-en.dict -- $(NULL) -+ibusemojigen.h: -+ $(MAKE) $(AM_MAKEFLAGS) dicts/emoji-en.dict - - # We put dicts/emoji-%.dict as the make target for the parallel build - # and the make target has to be genarated even if the file size is zero. -@@ -364,8 +364,8 @@ dicts/unicode-blocks.dict: unicode-parser - echo "Generated $@"; \ - fi; - --ibusunicodegen.h: dicts/unicode-blocks.dict -- $(NULL) -+ibusunicodegen.h: -+ $(MAKE) $(AM_MAKEFLAGS) dicts/unicode-blocks.dict - - unicode_parser_SOURCES = \ - unicode-parser.c \ -@@ -398,9 +398,15 @@ CLEANFILES += \ - stamp-ibusenumtypes.h \ - $(NULL) - --DISTCLEANFILES = \ -+MAINTAINERCLEANFILES = \ - ibusemojigen.h \ - ibusunicodegen.h \ -+ dicts/emoji-en.dict \ -+ dicts/unicode-blocks.dict \ -+ $(NULL) -+ -+DISTCLEANFILES = \ -+ $(MAINTAINERCLEANFILES) \ - ibusversion.h \ - $(NULL) - --- -2.33.1 - -From 104148bcdada1f8f22ef905c930f9944f3e99a63 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 2 Dec 2021 23:53:28 +0900 -Subject: [PATCH] src: Disable emoji shortcut key with no-emoji hint - -BUG=https://gitlab.gnome.org/GNOME/gtk/-/issues/4337 ---- - src/ibusengine.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/ibusengine.c b/src/ibusengine.c -index 9aeafbf9..7e844838 100644 ---- a/src/ibusengine.c -+++ b/src/ibusengine.c -@@ -2,8 +2,8 @@ - /* vim:set et sts=4: */ - /* ibus - The Input Bus - * Copyright (C) 2008-2013 Peng Huang -- * Copyright (C) 2018-2019 Takao Fujiwara -- * Copyright (C) 2008-2019 Red Hat, Inc. -+ * Copyright (C) 2018-2021 Takao Fujiwara -+ * Copyright (C) 2008-2021 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -954,6 +954,10 @@ ibus_engine_filter_key_event (IBusEngine *engine, - return FALSE; - for (n = names; n; n = n->next) { - const gchar *name = (const gchar *)n->data; -+ if (!g_strcmp0 (name, "emoji") && -+ (engine->priv->content_hints & IBUS_INPUT_HINT_NO_EMOJI)) { -+ continue; -+ } - keys = g_hash_table_lookup (priv->extension_keybindings, name); - for (; keys; keys++) { - if (keys->keyval == 0 && keys->keycode == 0 && keys->state == 0) --- -2.33.1 - -From f5757ada54edaa7d2e3ea948d340cdf48064e30c Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 6 Jan 2022 11:20:26 +0900 -Subject: [PATCH] ibusenginesimple: Fix to send char position at - update_preedit_text - -ibus_engine_update_preedit_text() should send the character position -instead of the byte position. - -BUG=https://github.com/ibus/ibus/issues/2368 ---- - src/ibusenginesimple.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c -index 83b04ebc..a80e41a5 100644 ---- a/src/ibusenginesimple.c -+++ b/src/ibusenginesimple.c -@@ -2,7 +2,7 @@ - /* vim:set et sts=4: */ - /* ibus - The Input Bus - * Copyright (C) 2014 Peng Huang -- * Copyright (C) 2015-2021 Takao Fujiwara -+ * Copyright (C) 2015-2022 Takao Fujiwara - * Copyright (C) 2014-2017 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or -@@ -386,7 +386,7 @@ ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple) - } else if (s->len >= G_MAXINT) { - g_warning ("%s is too long compose length: %lu", s->str, s->len); - } else { -- int len = (int)s->len; -+ guint len = (guint)g_utf8_strlen (s->str, -1); - IBusText *text = ibus_text_new_from_string (s->str); - ibus_text_append_attribute (text, - IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, len); --- -2.33.1 - -From 0e118e7e57caaa298e367ed99f2051ba47a35f81 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 20 Jan 2022 16:33:11 +0900 -Subject: [PATCH] data/dconf: Change XKB layout string color in panel - -Replace '#415099' with '#51a2da' in XKB layout string color - -BUG=https://github.com/ibus/ibus/issues/2364 ---- - data/dconf/org.freedesktop.ibus.gschema.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/data/dconf/org.freedesktop.ibus.gschema.xml b/data/dconf/org.freedesktop.ibus.gschema.xml -index 099b9c60..e90ee5ab 100644 ---- a/data/dconf/org.freedesktop.ibus.gschema.xml -+++ b/data/dconf/org.freedesktop.ibus.gschema.xml -@@ -146,7 +146,7 @@ - Show input method name on language bar - - -- '#415099' -+ '#51a2da' - RGBA value of XKB icon - XKB icon shows the layout string and the string is rendered with the RGBA value. The RGBA value can be 1. a color name from X11, 2. a hex value in form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha. - --- -2.33.1 - -From d9ff2bb6b04a7cf7d99f4e9832b4b8905858178c Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 20 Jan 2022 16:41:37 +0900 -Subject: [PATCH] data/dconf: Add Ctrl-semicolon to Emoji shortcut key - -period key is needed Shift key in French keyboard and Ctrl-period does -not work. -Add Ctrl-semicolon in org.freedesktop.ibus.panel.emoji.hotkey to fix -the problem. - -BUG=https://github.com/ibus/ibus/issues/2360 ---- - data/dconf/org.freedesktop.ibus.gschema.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/data/dconf/org.freedesktop.ibus.gschema.xml b/data/dconf/org.freedesktop.ibus.gschema.xml -index e90ee5ab..516f7520 100644 ---- a/data/dconf/org.freedesktop.ibus.gschema.xml -+++ b/data/dconf/org.freedesktop.ibus.gschema.xml -@@ -183,7 +183,7 @@ - The shortcut keys for turning Unicode typing on or off - - -- [ '<Control>period' ] -+ [ '<Control>period', '<Control>semicolon' ] - Emoji shortcut keys for gtk_accelerator_parse - The shortcut keys for turning emoji typing on or off - --- -2.33.1 - -From 5a455b1ead5d72483952356ddfe25b9e3b637e6f Mon Sep 17 00:00:00 2001 -From: Eberhard Beilharz -Date: Wed, 13 Oct 2021 19:00:47 +0200 -Subject: [PATCH] Fix unref problems with floating references - -When running with debug-enabled GLIB there are several critical -errors output: "A floating object ... was finalized. This means -that someone called g_object_unref() on an object that had only -a floating reference; the initial floating reference is not -owned by anyone and must be removed with g_object_ref_sink()." - -This change fixes this by calling `g_object_ref_sink()` before -`g_object_unref()` if we have a floating reference. - -It also fixes another related problem where we called -`g_object_unref()` on a static IBusText string (created with -`ibus_text_new_from_static_string()`) for which the API documentation -says not to free. - -BUG=https://github.com/ibus/ibus/pull/2359 ---- - src/ibusinputcontext.c | 21 ++++++++++++++------- - src/ibusproperty.c | 32 ++++++++++++++++---------------- - 2 files changed, 30 insertions(+), 23 deletions(-) - -diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c -index 2b1438fc..4b27551b 100644 ---- a/src/ibusinputcontext.c -+++ b/src/ibusinputcontext.c -@@ -550,7 +550,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - g_signal_emit (context, context_signals[COMMIT_TEXT], 0, text); - - if (g_object_is_floating (text)) -- g_object_unref (text); -+ g_object_ref_sink (text); -+ g_object_unref (text); - return; - } - if (g_strcmp0 (signal_name, "UpdatePreeditText") == 0) { -@@ -569,7 +570,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - visible); - - if (g_object_is_floating (text)) -- g_object_unref (text); -+ g_object_ref_sink (text); -+ g_object_unref (text); - return; - } - if (g_strcmp0 (signal_name, "UpdatePreeditTextWithMode") == 0) { -@@ -591,7 +593,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - mode); - - if (g_object_is_floating (text)) -- g_object_unref (text); -+ g_object_ref_sink (text); -+ g_object_unref (text); - return; - } - -@@ -619,7 +622,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - text, - visible); - if (g_object_is_floating (text)) -- g_object_unref (text); -+ g_object_ref_sink (text); -+ g_object_unref (text); - return; - } - -@@ -637,7 +641,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - table, - visible); - if (g_object_is_floating (table)) -- g_object_unref (table); -+ g_object_ref_sink (table); -+ g_object_unref (table); - return; - - } -@@ -655,7 +660,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - prop_list); - - if (g_object_is_floating (prop_list)) -- g_object_unref (prop_list); -+ g_object_ref_sink (prop_list); -+ g_object_unref (prop_list); - return; - } - -@@ -668,7 +674,8 @@ ibus_input_context_g_signal (GDBusProxy *proxy, - g_signal_emit (context, context_signals[UPDATE_PROPERTY], 0, prop); - - if (g_object_is_floating (prop)) -- g_object_unref (prop); -+ g_object_ref_sink (prop); -+ g_object_unref (prop); - return; - } - -diff --git a/src/ibusproperty.c b/src/ibusproperty.c -index e87d26b6..6d4ed088 100644 ---- a/src/ibusproperty.c -+++ b/src/ibusproperty.c -@@ -336,17 +336,20 @@ ibus_property_destroy (IBusProperty *prop) - prop->priv->icon = NULL; - - if (prop->priv->label) { -- g_object_unref (prop->priv->label); -+ if (!ibus_text_get_is_static (prop->priv->label)) -+ g_object_unref (prop->priv->label); - prop->priv->label = NULL; - } - - if (prop->priv->symbol) { -- g_object_unref (prop->priv->symbol); -+ if (!ibus_text_get_is_static (prop->priv->symbol)) -+ g_object_unref (prop->priv->symbol); - prop->priv->symbol = NULL; - } - - if (prop->priv->tooltip) { -- g_object_unref (prop->priv->tooltip); -+ if (!ibus_text_get_is_static (prop->priv->tooltip)) -+ g_object_unref (prop->priv->tooltip); - prop->priv->tooltip = NULL; - } - -@@ -401,7 +404,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 != NULL) { -+ if (prop->priv->label && !ibus_text_get_is_static (prop->priv->label)) { - g_object_unref (prop->priv->label); - } - prop->priv->label = IBUS_TEXT (ibus_serializable_deserialize (subvar)); -@@ -411,7 +414,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 != NULL) { -+ if (prop->priv->tooltip && !ibus_text_get_is_static (prop->priv->tooltip)) { - g_object_unref (prop->priv->tooltip); - } - prop->priv->tooltip = IBUS_TEXT (ibus_serializable_deserialize (subvar)); -@@ -432,7 +435,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 != NULL) { -+ if (prop->priv->symbol && !ibus_text_get_is_static (prop->priv->symbol)) { - g_object_unref (prop->priv->symbol); - } - prop->priv->symbol = IBUS_TEXT (ibus_serializable_deserialize (subvar)); -@@ -564,7 +567,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) { -+ if (prop->priv->label && !ibus_text_get_is_static (prop->priv->label)) { - g_object_unref (prop->priv->label); - } - -@@ -583,7 +586,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) { -+ if (prop->priv->symbol && !ibus_text_get_is_static (prop->priv->symbol)) { - g_object_unref (prop->priv->symbol); - } - -@@ -612,19 +615,16 @@ ibus_property_set_tooltip (IBusProperty *prop, - g_assert (IBUS_IS_PROPERTY (prop)); - g_assert (tooltip == NULL || IBUS_IS_TEXT (tooltip)); - -- IBusPropertyPrivate *priv = prop->priv; -- -- if (priv->tooltip) { -- g_object_unref (priv->tooltip); -+ if (prop->priv->tooltip && !ibus_text_get_is_static (prop->priv->tooltip)) { -+ g_object_unref (prop->priv->tooltip); - } - - if (tooltip == NULL) { -- priv->tooltip = ibus_text_new_from_static_string (""); -- g_object_ref_sink (priv->tooltip); -+ prop->priv->tooltip = ibus_text_new_from_static_string (""); - } - else { -- priv->tooltip = tooltip; -- g_object_ref_sink (priv->tooltip); -+ prop->priv->tooltip = tooltip; -+ g_object_ref_sink (prop->priv->tooltip); - } - } - --- -2.33.1 - -From ad95015dc411f84dd9b8869e596e4707cd2ccd2b Mon Sep 17 00:00:00 2001 -From: Sibo Dong <46512211+dongsibo@users.noreply.github.com> -Date: Wed, 2 Feb 2022 19:18:02 +0900 -Subject: [PATCH] ui/gtk3: Update man page for Emoji shortcut key - -The default Emoji shortcut key was changed but not updated in -the ibus-emoji.7 man page. - -BUG=https://github.com/ibus/ibus/pull/2353 ---- - ui/gtk3/ibus-emoji.7.in | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ui/gtk3/ibus-emoji.7.in b/ui/gtk3/ibus-emoji.7.in -index 9c6d3c6f..b4d941ec 100644 ---- a/ui/gtk3/ibus-emoji.7.in -+++ b/ui/gtk3/ibus-emoji.7.in -@@ -1,8 +1,8 @@ - .\" This file is distributed under the same license as the ibus - .\" package. --.\" Copyright (C) Takao Fujiwara , 2017-2018. -+.\" Copyright (C) Takao Fujiwara , 2017-2022. - .\" --.TH "IBUS EMOJI" 7 "August 2018" "@VERSION@" "User Commands" -+.TH "IBUS EMOJI" 7 "February 2022" "@VERSION@" "User Commands" - .SH NAME - .B ibus-emoji - \- Call the IBus emoji utility by -@@ -51,7 +51,7 @@ E.g. "Noto Color Emoji", "Android Emoji" font. - - .SH "KEYBOARD OPERATIONS" - .TP --\fBControl-Shift-e\fR -+\fBControl-Period or Control-Semicolon\fR - Launch IBus Emojier. The shortcut key can be customized by - .B ibus\-setup (1). - .TP --- -2.33.1 - -From 0f1485bfa687386f26ef5909c123e0ae2e3e11b9 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 3 Feb 2022 14:03:30 +0900 -Subject: [PATCH] src: Add IBUS_INPUT_HINT_PRIVATE for browser private mode - -GTK4 added GTK_INPUT_HINT_PRIVATE recently for Web brower -private or guest mode. - -BUG=https://github.com/ibus/ibus/issues/2315 ---- - src/ibustypes.h | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/ibustypes.h b/src/ibustypes.h -index 798ad04d..990659ac 100644 ---- a/src/ibustypes.h -+++ b/src/ibustypes.h -@@ -2,7 +2,8 @@ - /* vim:set et sts=4: */ - /* ibus - The Input Bus - * Copyright (C) 2008-2013 Peng Huang -- * Copyright (C) 2008-2020 Red Hat, Inc. -+ * Copyright (C) 2010-2022 Takao Fujiwara -+ * Copyright (C) 2008-2022 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -300,6 +301,8 @@ typedef enum - * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. Since 1.5.11 - * @IBUS_INPUT_HINT_EMOJI: Suggest offering Emoji support. Since 1.5.24 - * @IBUS_INPUT_HINT_NO_EMOJI: Suggest not offering Emoji support. Since 1.5.24 -+ * @IBUS_INPUT_HINT_PRIVATE: Request that the input method should not -+ * update personalized data (like typing history). Since 1.5.26 - * - * Describes hints that might be taken into account by engines. Note - * that engines may already tailor their behaviour according to the -@@ -326,7 +329,8 @@ typedef enum - IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, - IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8, - IBUS_INPUT_HINT_EMOJI = 1 << 9, -- IBUS_INPUT_HINT_NO_EMOJI = 1 << 10 -+ IBUS_INPUT_HINT_NO_EMOJI = 1 << 10, -+ IBUS_INPUT_HINT_PRIVATE = 1 << 11 - } IBusInputHints; - - #endif --- -2.33.1 - -From 787b564982d17017cb35ab87b71b6a16d7440387 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 3 Feb 2022 14:34:34 +0900 -Subject: [PATCH] bus: mkdir socket dirs instead of socket paths - -IBus ran mkdir for socket paths for --address=unix:path -but should does the socket directories instead. - -BUG=https://github.com/ibus/ibus/issues/2363 ---- - bus/server.c | 39 +++++++++++++++++++++++---------------- - 1 file changed, 23 insertions(+), 16 deletions(-) - -diff --git a/bus/server.c b/bus/server.c -index e8d0ce2b..6abf8427 100644 ---- a/bus/server.c -+++ b/bus/server.c -@@ -2,7 +2,7 @@ - /* vim:set et sts=4: */ - /* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang -- * Copyright (C) 2011-2021 Takao Fujiwara -+ * Copyright (C) 2011-2022 Takao Fujiwara - * Copyright (C) 2008-2021 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or -@@ -38,14 +38,14 @@ static GDBusServer *server = NULL; - static GMainLoop *mainloop = NULL; - static BusDBusImpl *dbus = NULL; - static BusIBusImpl *ibus = NULL; --static gchar *address = NULL; -+static char *address = NULL; - static gboolean _restart = FALSE; - - static void - _restart_server (void) - { -- gchar *exe; -- gint fd; -+ char *exe; -+ int fd; - ssize_t r; - int MAXSIZE = 0xFFF; - char proclnk[MAXSIZE]; -@@ -201,11 +201,11 @@ bus_acquired_handler (GDBusConnection *connection, - NULL); - } - --static gchar * -+static char * - _bus_extract_address (void) - { -- gchar *socket_address = g_strdup (g_address); -- gchar *p; -+ char *socket_address = g_strdup (g_address); -+ char *p; - - #define IF_REPLACE_VARIABLE_WITH_FUNC(variable, func, format) \ - if ((p = g_strstr_len (socket_address, -1, (variable)))) { \ -@@ -242,12 +242,12 @@ bus_server_init (void) - #define IBUS_UNIX_ABSTRACT "unix:abstract=" - #define IBUS_UNIX_DIR "unix:dir=" - -- gchar *socket_address; -+ char *socket_address; - GDBusServerFlags flags = G_DBUS_SERVER_FLAGS_NONE; -- gchar *guid; -+ char *guid; - GDBusAuthObserver *observer; - GError *error = NULL; -- gchar *unix_dir = NULL; -+ char *unix_dir = NULL; - - dbus = bus_dbus_impl_get_default (); - ibus = bus_ibus_impl_get_default (); -@@ -256,18 +256,24 @@ bus_server_init (void) - /* init server */ - socket_address = _bus_extract_address (); - --#define IF_GET_UNIX_DIR(prefix) \ -+#define IF_GET_UNIX_DIR_FROM_DIR(prefix) \ - if (g_str_has_prefix (socket_address, (prefix))) { \ - unix_dir = g_strdup (socket_address + strlen (prefix)); \ - } -+#define IF_GET_UNIX_DIR_FROM_PATH(prefix) \ -+ if (g_str_has_prefix (socket_address, (prefix))) { \ -+ const char *unix_path = socket_address + strlen (prefix); \ -+ unix_dir = g_path_get_dirname (unix_path); \ -+ } -+ - -- IF_GET_UNIX_DIR (IBUS_UNIX_TMPDIR) -+ IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_TMPDIR) - else -- IF_GET_UNIX_DIR (IBUS_UNIX_PATH) -+ IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_PATH) - else -- IF_GET_UNIX_DIR (IBUS_UNIX_ABSTRACT) -+ IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_ABSTRACT) - else -- IF_GET_UNIX_DIR (IBUS_UNIX_DIR) -+ IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_DIR) - else { - g_error ("Your socket address \"%s\" does not correspond with " - "one of the following formats; " -@@ -329,7 +335,8 @@ bus_server_init (void) - bus_acquired_handler, - NULL, NULL, NULL, NULL); - --#undef IF_GET_UNIX_DIR -+#undef IF_GET_UNIX_DIR_FROM_DIR -+#undef IF_GET_UNIX_DIR_FROM_PATH - #undef IBUS_UNIX_TMPDIR - #undef IBUS_UNIX_PATH - #undef IBUS_UNIX_ABSTRACT --- -2.33.1 - -From dfd3fbf26fa4b5ff20512b166a8dd321afc10344 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 3 Feb 2022 17:31:08 +0900 -Subject: [PATCH] bus: Do not mkdir abstract unix socket - -IBus ran mkdir for unix abstract sockets for --address=unix:abstract -but should not need to mkdir. - -BUG=https://github.com/ibus/ibus/issues/2363 ---- - bus/server.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/bus/server.c b/bus/server.c -index 6abf8427..968d5346 100644 ---- a/bus/server.c -+++ b/bus/server.c -@@ -265,13 +265,15 @@ bus_server_init (void) - const char *unix_path = socket_address + strlen (prefix); \ - unix_dir = g_path_get_dirname (unix_path); \ - } -+#define IF_GET_UNIX_DIR_FROM_ABSTRACT(prefix) \ -+ if (g_str_has_prefix (socket_address, (prefix))) {} - - - IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_TMPDIR) - else - IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_PATH) - else -- IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_ABSTRACT) -+ IF_GET_UNIX_DIR_FROM_ABSTRACT (IBUS_UNIX_ABSTRACT) - else - IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_DIR) - else { -@@ -281,7 +283,8 @@ bus_server_init (void) - IBUS_UNIX_ABSTRACT "FILE, " IBUS_UNIX_DIR "DIR.", - socket_address); - } -- if (!g_file_test (unix_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { -+ if (unix_dir && -+ !g_file_test (unix_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { - /* Require mkdir for BSD system. - * The mode 0700 can eliminate malicious users change the mode. - * `chmod` runs for the last directory only not to change the modes -@@ -337,6 +340,7 @@ bus_server_init (void) - - #undef IF_GET_UNIX_DIR_FROM_DIR - #undef IF_GET_UNIX_DIR_FROM_PATH -+#undef IF_GET_UNIX_DIR_FROM_ABSTRACT - #undef IBUS_UNIX_TMPDIR - #undef IBUS_UNIX_PATH - #undef IBUS_UNIX_ABSTRACT --- -2.33.1 - -From c69b61aa66239e1b13c9764b2d3bf6f02d086785 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 4 Feb 2022 15:08:36 +0900 -Subject: [PATCH] src: Fix ibus_key_event_from_string for - gobject-introspection - -BUG=https://github.com/ibus/ibus/issues/2330 ---- - src/ibusshare.h | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/ibusshare.h b/src/ibusshare.h -index d70af29f..d739e2ff 100644 ---- a/src/ibusshare.h -+++ b/src/ibusshare.h -@@ -2,8 +2,8 @@ - /* vim:set et sts=4: */ - /* ibus - The Input Bus - * Copyright (C) 2008-2013 Peng Huang -- * Copyright (C) 2015-2018 Takao Fujiwara -- * Copyright (C) 2008-2018 Red Hat, Inc. -+ * Copyright (C) 2015-2022 Takao Fujiwara -+ * Copyright (C) 2008-2022 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -333,8 +333,8 @@ gchar *ibus_key_event_to_string - /** - * ibus_key_event_from_string: - * @string: Key event string. -- * @keyval: Variable that hold key symbol result. -- * @modifiers: Variable that hold modifiers result. -+ * @keyval: (out): Variable that hold key symbol result. -+ * @modifiers: (out): Variable that hold modifiers result. - * - * Parse key event string and return key symbol and modifiers. - * --- -2.33.1 - -From a076b388d856aeb4c8f8317dd6cd9dd6d61fe9ac Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -Date: Wed, 4 Nov 2020 10:48:45 +0100 -Subject: [PATCH] src, client/x11: Add systemd unit file - -This so far depends on GNOME targets, and is thus just usable there. -Other DEs wishing to use systemd and ibus will need to add the -necessary dependencies where applicable. - -There are 2 scenarios here: -- On X11 sessions, ibus-daemon will be launched with --xim parameter, - so ibus-x11 is started with it. -- On Wayland sessions, ibus-daemon will be started without XIM support, - ibus-x11 will be launched and tear down together with all other - session X11 services while Xwayland is running. - -For the second part of the second situation, additionally install -a script at /etc/xdg/Xwayland-session.d, which takes care of X11 -service initialization together with the Xwayland instance. - -BUG=https://github.com/ibus/ibus/pull/2377 ---- - client/x11/10-ibus-x11.in | 2 ++ - client/x11/Makefile.am | 18 ++++++++++++ - configure.ac | 17 +++++++++++ - src/Makefile.am | 16 +++++++++++ - ....freedesktop.IBus.session.GNOME.service.in | 28 +++++++++++++++++++ - 5 files changed, 81 insertions(+) - create mode 100755 client/x11/10-ibus-x11.in - create mode 100644 bus/services/org.freedesktop.IBus.session.GNOME.service.in - -diff --git a/client/x11/10-ibus-x11.in b/client/x11/10-ibus-x11.in -new file mode 100755 -index 00000000..973cbb6f ---- /dev/null -+++ b/client/x11/10-ibus-x11.in -@@ -0,0 +1,2 @@ -+#!/bin/sh -+@libexecdir@/ibus-x11 & -diff --git a/client/x11/Makefile.am b/client/x11/Makefile.am -index 12de6ea8..90454bcf 100644 ---- a/client/x11/Makefile.am -+++ b/client/x11/Makefile.am -@@ -67,6 +67,16 @@ noinst_HEADERS = \ - locales.h \ - $(NULL) - -+xwaylandsessiond_in_files = 10-ibus-x11.in -+xwaylandsessiond_DATA = $(xwaylandsessiond_in_files:.in=) -+xwaylandsessionddir=$(sysconfdir)/xdg/Xwayland-session.d -+ -+10-ibus-x11: 10-ibus-x11.in -+ $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ -+ -+install-data-hook: -+ chmod 755 $(DESTDIR)$(xwaylandsessionddir)/10-ibus-x11 -+ - $(libIMdkit): - (cd $(top_builddir)/util/IMdkit; make) - -@@ -81,4 +91,12 @@ locales.h: - xargs python -c 'import sys;print "#define LOCALES_STRING \"%s\"" % ",".join(sys.argv[1:])' \ - ) > $@ - -+CLEANFILES = \ -+ $(xwaylandsessiond_DATA) \ -+ $(NULL) -+ -+EXTRA_DIST = \ -+ 10-ibus-x11.in \ -+ $(NULL) -+ - -include $(top_srcdir)/git.mk -diff --git a/configure.ac b/configure.ac -index ce096ad3..73c5e429 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -393,6 +393,22 @@ if test x"$enable_dconf" = x"yes"; then - enable_dconf="yes (enabled, use --disable-dconf to disable)" - fi - -+AC_ARG_ENABLE(systemd-services, -+ AS_HELP_STRING([--disable-systemd-services], -+ [Disable systemd services installation]), -+ [enable_systemd=$enableval], -+ [enable_systemd=yes] -+) -+AM_CONDITIONAL([ENABLE_SYSTEMD], [test x"$enable_systemd" = x"yes"]) -+ -+if test x"$enable_systemd" = x"yes"; then -+ PKG_CHECK_MODULES(SYSTEMD, [ -+ systemd >= 0.7.5 -+ ]) -+ AC_SUBST([SYSTEMD_USER_UNIT_DIR], [`$PKG_CONFIG --variable systemduserunitdir systemd`]) -+ enable_systemd="yes (enabled, use --disable-systemd-services to disable)" -+fi -+ - # Check env. - AC_PATH_PROG(ENV_IBUS_TEST, env) - AC_SUBST(ENV_IBUS_TEST) -@@ -860,6 +876,7 @@ Build options: - UCD directory $UCD_DIR - Socket directory "$IBUS_SOCKET_DIR" - XFixes client disconnect $have_xfixes -+ Install systemd service $enable_systemd - Run test cases $enable_tests - Install tests $enable_install_tests - ]) -diff --git a/src/Makefile.am b/src/Makefile.am -index 578694b5..bbaa6c90 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -317,6 +317,11 @@ install-data-hook: - rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \ - fi; \ - done -+ $(MKDIR_P) "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants/" -+ ( \ -+ cd "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants" ; \ -+ $(LN_S) -f "../org.freedesktop.IBus.session.GNOME.service" .; \ -+ ) - - emoji_parser_SOURCES = \ - emoji-parser.c \ -@@ -383,7 +388,17 @@ clean-local: - $(NULL) - endif - -+if ENABLE_SYSTEMD -+systemdservice_in_files = org.freedesktop.IBus.session.GNOME.service.in -+systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) -+systemdservicedir=$(SYSTEMD_USER_UNIT_DIR) -+ -+org.freedesktop.IBus.session.GNOME.service: org.freedesktop.IBus.session.GNOME.service.in -+ $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" $< > $@.tmp && mv $@.tmp $@ -+endif -+ - EXTRA_DIST = \ -+ org.freedesktop.IBus.session.GNOME.service.in \ - emoji-parser.c \ - ibusversion.h.in \ - ibusmarshalers.list \ -@@ -393,6 +408,7 @@ EXTRA_DIST = \ - $(NULL) - - CLEANFILES += \ -+ $(systemdservice_DATA) \ - $(BUILT_SOURCES) \ - stamp-ibusmarshalers.h \ - stamp-ibusenumtypes.h \ -diff --git a/bus/services/org.freedesktop.IBus.session.GNOME.service.in b/bus/services/org.freedesktop.IBus.session.GNOME.service.in -new file mode 100644 -index 00000000..76444dbd ---- /dev/null -+++ b/bus/services/org.freedesktop.IBus.session.GNOME.service.in -@@ -0,0 +1,28 @@ -+[Unit] -+Description=IBus Daemon -+CollectMode=inactive-or-failed -+ -+# Require GNOME session and specify startup ordering -+Requisite=gnome-session-initialized.target -+After=gnome-session-initialized.target -+PartOf=gnome-session-initialized.target -+Before=gnome-session.target -+ -+# Needs to run when DISPLAY/WAYLAND_DISPLAY is set -+After=gnome-session-initialized.target -+PartOf=gnome-session-initialized.target -+ -+# Never run in GDM -+Conflicts=gnome-session@gnome-login.target -+ -+[Service] -+Type=dbus -+# Only pull --xim in X11 session, it is done via Xwayland-session.d on Wayland -+ExecStart=sh -c '@bindir@/ibus-daemon --panel disable $([[ $XDG_SESSION_TYPE == "x11" ]] && echo "--xim")' -+Restart=on-abnormal -+BusName=org.freedesktop.IBus -+TimeoutStopSec=5 -+Slice=session.slice -+ -+[Install] -+WantedBy=gnome-session.target --- -2.33.1 - -From b5423f0cff78e627fec12378bfcc70efa79e9379 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 17 Feb 2022 20:15:38 +0900 -Subject: [PATCH] src/services: Add org.freedesktop.IBus.session.generic.service - -Move bus/*.service.in & src/*.service.in into bus/services - -BUG=https://github.com/ibus/ibus/pull/2381 ---- - bus/Makefile.am | 16 +---- - bus/services/Makefile.am | 68 +++++++++++++++++++ - .../org.freedesktop.IBus.service.in | 0 - ....freedesktop.IBus.session.GNOME.service.in | 2 +- - ...reedesktop.IBus.session.generic.service.in | 15 ++++ - configure.ac | 48 ++++++------- - src/Makefile.am | 16 ----- - 7 files changed, 112 insertions(+), 53 deletions(-) - create mode 100644 bus/services/Makefile.am - create mode 100644 bus/services/org.freedesktop.IBus.service.in - create mode 100644 bus/services/org.freedesktop.IBus.session.generic.service.in - -diff --git a/bus/Makefile.am b/bus/Makefile.am -index 4383a874..e173ee25 100644 ---- a/bus/Makefile.am -+++ b/bus/Makefile.am -@@ -3,8 +3,8 @@ - # ibus - The Input Bus - # - # Copyright (c) 2007-2013 Peng Huang --# Copyright (c) 2013-2018 Takao Fujiwara --# Copyright (c) 2007-2018 Red Hat, Inc. -+# Copyright (c) 2013-2022 Takao Fujiwara -+# Copyright (c) 2007-2022 Red Hat, Inc. - # - # This library is free software; you can redistribute it and/or - # modify it under the terms of the GNU Lesser General Public -@@ -22,6 +22,7 @@ - # USA - - NULL = -+SUBDIRS = . services - - libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la - -@@ -190,15 +191,4 @@ man_onedir = $(mandir)/man1 - %.1.gz: %.1 - $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ - -- --dbusservice_in_files = org.freedesktop.IBus.service.in --dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) --dbusservicedir=${datadir}/dbus-1/services -- --org.freedesktop.IBus.service: org.freedesktop.IBus.service.in -- $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" -e "s|\@xim_cli_arg\@|$(XIM_CLI_ARG)|" $< > $@.tmp && mv $@.tmp $@ -- --EXTRA_DIST += $(dbusservice_in_files) --CLEANFILES += $(dbusservice_DATA) -- - -include $(top_srcdir)/git.mk -diff --git a/bus/services/Makefile.am b/bus/services/Makefile.am -new file mode 100644 -index 00000000..9cc42153 ---- /dev/null -+++ b/bus/services/Makefile.am -@@ -0,0 +1,68 @@ -+# vim:set noet ts=4: -+# -+# ibus - The Input Bus -+# -+# Copyright (c) 2022 Takao Fujiwara -+# Copyright (c) 2022 Red Hat, Inc. -+# -+# This library is free software; you can redistribute it and/or -+# modify it under the terms of the GNU Lesser General Public -+# License as published by the Free Software Foundation; either -+# version 2.1 of the License, or (at your option) any later version. -+# -+# This library is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# Lesser General Public License for more details. -+# -+# You should have received a copy of the GNU Lesser General Public -+# License along with this library; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -+# USA -+ -+NULL = -+ -+# Originally this D-Bus service file was added for GNOME but seems not to -+# be used at present. -+# -+# TODO: Check if flatpack uses this file and we could delete -+# org.freedesktop.IBus.service file in the future. -+dbusservice_in_files = org.freedesktop.IBus.service.in -+dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) -+dbusservicedir=${datadir}/dbus-1/services -+ -+systemdservice_in_files = \ -+ org.freedesktop.IBus.session.generic.service.in \ -+ org.freedesktop.IBus.session.GNOME.service.in \ -+ $(NULL) -+ -+%.service: %.service.in -+ $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" \ -+ -e "s|\@xim_cli_arg\@|$(XIM_CLI_ARG)|" $< > $@.tmp && \ -+ mv $@.tmp $@ -+ -+if ENABLE_SYSTEMD -+systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) -+systemdservicedir = $(SYSTEMD_USER_UNIT_DIR) -+ -+# in install-data-hook. -+install-data-hook: -+ $(MKDIR_P) "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants/" -+ ( \ -+ cd "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants" ; \ -+ $(LN_S) -f "../org.freedesktop.IBus.session.GNOME.service" .; \ -+ ) -+ $(NULL) -+endif -+ -+EXTRA_DIST = \ -+ $(dbusservice_in_files) \ -+ $(systemdservice_in_files) \ -+ $(NULL) -+ -+CLEANFILES = \ -+ $(dbusservice_DATA) \ -+ $(systemdservice_DATA) \ -+ $(NULL) -+ -+-include $(top_srcdir)/git.mk -diff --git a/bus/org.freedesktop.IBus.service.in b/bus/services/org.freedesktop.IBus.service.in -new file mode 100644 -index 00000000..9d493159 ---- /dev/null -+++ b/bus/services/org.freedesktop.IBus.service.in -@@ -0,0 +1,3 @@ -+[D-BUS Service] -+Name=org.freedesktop.IBus -+Exec=@bindir@/ibus-daemon --replace --panel disable @xim_cli_arg@ -diff --git a/bus/services/org.freedesktop.IBus.session.GNOME.service.in b/bus/services/org.freedesktop.IBus.session.GNOME.service.in -index 76444dbd..a99370fa 100644 ---- a/bus/services/org.freedesktop.IBus.session.GNOME.service.in -+++ b/bus/services/org.freedesktop.IBus.session.GNOME.service.in -@@ -1,5 +1,5 @@ - [Unit] --Description=IBus Daemon -+Description=IBus Daemon for GNOME - CollectMode=inactive-or-failed - - # Require GNOME session and specify startup ordering -diff --git a/bus/services/org.freedesktop.IBus.session.generic.service.in b/bus/services/org.freedesktop.IBus.session.generic.service.in -new file mode 100644 -index 00000000..9d493159 ---- /dev/null -+++ b/bus/services/org.freedesktop.IBus.session.generic.service.in -@@ -0,0 +1,15 @@ -+[Unit] -+Description=IBus Daemon for generic sessions -+CollectMode=inactive-or-failed -+ -+# Never run in GNOME -+Conflicts=gnome-session-initialized.target -+ -+[Service] -+Type=dbus -+# Only pull --xim in X11 session, it is done via Xwayland-session.d on Wayland -+ExecStart=sh -c '@bindir@/ibus-daemon $IBUS_DAEMON_ARGS' -+Restart=on-abnormal -+BusName=org.freedesktop.IBus -+TimeoutStopSec=5 -+Slice=session.slice -diff --git a/configure.ac b/configure.ac -index 73c5e429..4137e6cc 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -3,8 +3,8 @@ - # ibus - The Input Bus - # - # Copyright (c) 2007-2016 Peng Huang --# Copyright (c) 2015-2021 Takao Fujiwara --# Copyright (c) 2007-2021 Red Hat, Inc. -+# Copyright (c) 2015-2022 Takao Fujiwara -+# Copyright (c) 2007-2022 Red Hat, Inc. - # - # This library is free software; you can redistribute it and/or - # modify it under the terms of the GNU Lesser General Public -@@ -791,24 +791,22 @@ AC_SUBST(XKBCONFIG_BASE) - AC_SUBST([GDBUS_CODEGEN], [`$PKG_CONFIG --variable gdbus_codegen gio-2.0`]) - - # OUTPUT files --AC_CONFIG_FILES([ po/Makefile.in --Makefile --ibus-1.0.pc --ibus.spec -+AC_CONFIG_FILES([ -+po/Makefile.in -+bindings/Makefile -+bindings/pygobject/Makefile -+bindings/vala/Makefile -+bus/Makefile -+bus/services/Makefile - client/Makefile - client/gtk2/Makefile - client/gtk3/Makefile - client/gtk4/Makefile - client/x11/Makefile - client/wayland/Makefile --src/Makefile --src/ibusversion.h --src/tests/Makefile --bus/Makefile --portal/Makefile --engine/Makefile --util/Makefile --util/IMdkit/Makefile -+conf/Makefile -+conf/dconf/Makefile -+conf/memconf/Makefile - data/Makefile - data/annotations/Makefile - data/icons/Makefile -@@ -819,20 +817,24 @@ docs/Makefile - docs/reference/Makefile - docs/reference/ibus/ibus-docs.sgml - docs/reference/ibus/Makefile --m4/Makefile -+engine/Makefile - ibus/_config.py - ibus/Makefile - ibus/interface/Makefile --ui/Makefile --ui/gtk3/Makefile -+m4/Makefile -+portal/Makefile - setup/Makefile --bindings/Makefile --bindings/pygobject/Makefile --bindings/vala/Makefile --conf/Makefile --conf/dconf/Makefile --conf/memconf/Makefile -+src/Makefile -+src/ibusversion.h -+src/tests/Makefile - tools/Makefile -+ui/Makefile -+ui/gtk3/Makefile -+util/Makefile -+util/IMdkit/Makefile -+Makefile -+ibus-1.0.pc -+ibus.spec - ]) - - AC_OUTPUT -diff --git a/src/Makefile.am b/src/Makefile.am -index bbaa6c90..578694b5 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -317,11 +317,6 @@ install-data-hook: - rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \ - fi; \ - done -- $(MKDIR_P) "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants/" -- ( \ -- cd "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants" ; \ -- $(LN_S) -f "../org.freedesktop.IBus.session.GNOME.service" .; \ -- ) - - emoji_parser_SOURCES = \ - emoji-parser.c \ -@@ -388,17 +383,7 @@ clean-local: - $(NULL) - endif - --if ENABLE_SYSTEMD --systemdservice_in_files = org.freedesktop.IBus.session.GNOME.service.in --systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) --systemdservicedir=$(SYSTEMD_USER_UNIT_DIR) -- --org.freedesktop.IBus.session.GNOME.service: org.freedesktop.IBus.session.GNOME.service.in -- $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" $< > $@.tmp && mv $@.tmp $@ --endif -- - EXTRA_DIST = \ -- org.freedesktop.IBus.session.GNOME.service.in \ - emoji-parser.c \ - ibusversion.h.in \ - ibusmarshalers.list \ -@@ -408,7 +393,6 @@ EXTRA_DIST = \ - $(NULL) - - CLEANFILES += \ -- $(systemdservice_DATA) \ - $(BUILT_SOURCES) \ - stamp-ibusmarshalers.h \ - stamp-ibusenumtypes.h \ --- -2.33.1 - -From 5cfe838715097d61b50da55f80bcff2c698ca885 Mon Sep 17 00:00:00 2001 -From: Changwoo Ryu -Date: Fri, 18 Feb 2022 09:07:02 +0900 -Subject: [PATCH] client/gtk2/ibusimcontext: Fix forward key keycode for GTK4 - -When a keycode is provided (!= 0) for a forwarded key event, convert it to a -GTK keycode before passing it to gtk_im_context_filter_key(). - -Also free GdkKeymapKey after gdk_display_map_keyval() is called. - -BUG=https://github.com/ibus/ibus/issues/2380 -BUG=https://github.com/ibus/ibus/issues/2382 ---- - client/gtk2/ibusimcontext.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index c2df3a87..a5e5e792 100644 ---- a/client/gtk2/ibusimcontext.c -+++ b/client/gtk2/ibusimcontext.c -@@ -1945,7 +1945,9 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, - #if GTK_CHECK_VERSION (3, 98, 4) - int group = 0; - g_return_if_fail (GTK_IS_IM_CONTEXT (ibusimcontext)); -- if (keycode == 0 && ibusimcontext->client_window) { -+ if (keycode != 0) { -+ keycode += 8; // to GTK keycode -+ } else if (ibusimcontext->client_window) { - GdkDisplay *display = - gtk_widget_get_display (ibusimcontext->client_window); - GdkKeymapKey *keys = NULL; -@@ -1953,6 +1955,7 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, - if (gdk_display_map_keyval (display, keyval, &keys, &n_keys)) { - keycode = keys->keycode; - group = keys->group; -+ g_free (keys); - } else { - g_warning ("Failed to parse keycode from keyval %x", keyval); - } --- -2.33.1 - -From a82bda58a45470c4be0f3db21eaddc73a230807f Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 18 Feb 2022 12:04:09 +0900 -Subject: [PATCH] src/tests: Fix typos - -- test_metas_in location -- Check ibus processes in CI -- Fix libexec path ---- - src/tests/Makefile.am | 8 ++++---- - src/tests/ibus-desktop-testing-autostart | 2 ++ - src/tests/ibus-desktop-testing.desktop.in | 2 +- - 3 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am -index 7d00f236..f932f18f 100644 ---- a/src/tests/Makefile.am -+++ b/src/tests/Makefile.am -@@ -3,7 +3,7 @@ - # ibus - The Input Bus - # - # Copyright (c) 2007-2015 Peng Huang --# Copyright (c) 2015-2021 Takao Fujiwara -+# Copyright (c) 2015-2022 Takao Fujiwara - # Copyright (c) 2007-2018 Red Hat, Inc. - # - # This library is free software; you can redistribute it and/or -@@ -117,11 +117,11 @@ org.freedesktop.IBus.Desktop.Testing.desktop: ibus-desktop-testing.desktop.in - mv $@.tmp $@ - endif - --$(test_metas): $(test_metas_in) $(test_programs) -+$(test_metas): $(test_metas_in) - f=`echo $@ | sed -e 's/\.test//'`; \ - TEST_EXEC=$(test_execsdir)/$$f; \ -- sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(test_metas_in) > $@.tmp; \ -- mv $@.tmp $@; \ -+ sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(srcdir)/$(test_metas_in) \ -+ > $@.tmp && mv $@.tmp $@; \ - $(NULL) - - ibus-compose-locales: ibus-compose-locales.in -diff --git a/src/tests/ibus-desktop-testing-autostart b/src/tests/ibus-desktop-testing-autostart -index da22b64e..1e1eb180 100755 ---- a/src/tests/ibus-desktop-testing-autostart -+++ b/src/tests/ibus-desktop-testing-autostart -@@ -29,6 +29,8 @@ pwd - pstree -asp $$ - gsettings list-recursively org.gnome.shell - rpm -q gnome-shell-extension-no-overview gnome-shell gnome-session -+ps -ef | grep ibus | grep -v grep -+ibus address - ' - - if [ $# -gt 0 ] ; then -diff --git a/src/tests/ibus-desktop-testing.desktop.in b/src/tests/ibus-desktop-testing.desktop.in -index fa0c9b40..1b815345 100644 ---- a/src/tests/ibus-desktop-testing.desktop.in -+++ b/src/tests/ibus-desktop-testing.desktop.in -@@ -2,7 +2,7 @@ - Name=IBus Desktop Testing Runner - GenericName=Input Method Desktop Testing Runner - Comment=Test plugin for IBus Desktop Testing --Exec=@ibexecdir@/ibus-desktop-testing-autostart /var/tmp/ibus-ci-autostart.log -+Exec=@libexecdir@/ibus-desktop-testing-autostart /var/tmp/ibus-ci-autostart.log - Terminal=false - Type=Application - Encoding=UTF-8 --- -2.33.1 - -From 19377ad22d8145ea431e5de51f047061c98f8d21 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Tue, 1 Mar 2022 18:26:21 +0900 -Subject: [PATCH] src/ibuscompose: Check algorithm dead key by 9 length - -This change fixes the D-Bus timeout by a long compose preedit text. -check_normalize_nfc() calculates the factorical of the compse preedit -length and assigne the value to an INT variable and it could excceed -the MAX_INT. -Probably I think the length of the compose algorizhm dead key would be -enough 9. I.e. 9! == 46320 <= SHRT_MAX == 32767 - -BUG=https://github.com/ibus/ibus/issues/2385 ---- - src/ibuscomposetable.c | 35 +++++++++++++++++++++++------------ - 1 file changed, 23 insertions(+), 12 deletions(-) - -diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c -index 250e0139..387a24a8 100644 ---- a/src/ibuscomposetable.c -+++ b/src/ibuscomposetable.c -@@ -1,7 +1,7 @@ - /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ - /* ibus - The Input Bus - * Copyright (C) 2013-2014 Peng Huang -- * Copyright (C) 2013-2021 Takao Fujiwara -+ * Copyright (C) 2013-2022 Takao Fujiwara - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -46,6 +46,7 @@ - #define IBUS_COMPOSE_TABLE_MAGIC "IBusComposeTable" - #define IBUS_COMPOSE_TABLE_VERSION (4) - #define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale" -+#define IBUS_MAX_COMPOSE_ALGORITHM_LEN 9 - - typedef struct { - gunichar *sequence; -@@ -1659,7 +1660,7 @@ ibus_compose_table_compact_check (const IBusComposeTableCompactEx - static gboolean - check_normalize_nfc (gunichar* combination_buffer, int n_compose) - { -- gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_LEN]; -+ gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_ALGORITHM_LEN + 1]; - char *combination_utf8_temp = NULL; - char *nfc_temp = NULL; - int n_combinations; -@@ -1682,7 +1683,7 @@ check_normalize_nfc (gunichar* combination_buffer, int n_compose) - - memcpy (combination_buffer_temp, - combination_buffer, -- IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); -+ IBUS_MAX_COMPOSE_ALGORITHM_LEN * sizeof (gunichar) ); - - for (i = 0; i < n_combinations; i++ ) { - g_unicode_canonical_ordering (combination_buffer_temp, n_compose); -@@ -1694,7 +1695,7 @@ check_normalize_nfc (gunichar* combination_buffer, int n_compose) - if (g_utf8_strlen (nfc_temp, -1) == 1) { - memcpy (combination_buffer, - combination_buffer_temp, -- IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); -+ IBUS_MAX_COMPOSE_ALGORITHM_LEN * sizeof (gunichar) ); - - g_free (combination_utf8_temp); - g_free (nfc_temp); -@@ -1708,14 +1709,14 @@ check_normalize_nfc (gunichar* combination_buffer, int n_compose) - if (n_compose > 2) { - int j = i % (n_compose - 1) + 1; - int k = (i+1) % (n_compose - 1) + 1; -- if (j >= IBUS_MAX_COMPOSE_LEN) { -- g_warning ("j >= IBUS_MAX_COMPOSE_LEN for " \ -- "combination_buffer_temp"); -+ if (j >= IBUS_MAX_COMPOSE_ALGORITHM_LEN) { -+ g_warning ("j >= %d for combination_buffer_temp", -+ IBUS_MAX_COMPOSE_ALGORITHM_LEN); - break; - } -- if (k >= IBUS_MAX_COMPOSE_LEN) { -- g_warning ("k >= IBUS_MAX_COMPOSE_LEN for " \ -- "combination_buffer_temp"); -+ if (k >= IBUS_MAX_COMPOSE_ALGORITHM_LEN) { -+ g_warning ("k >= %d for combination_buffer_temp", -+ IBUS_MAX_COMPOSE_ALGORITHM_LEN); - break; - } - temp_swap = combination_buffer_temp[j]; -@@ -1737,13 +1738,23 @@ ibus_check_algorithmically (const guint16 *compose_buffer, - - { - int i; -- gunichar combination_buffer[IBUS_MAX_COMPOSE_LEN]; -+ gunichar combination_buffer[IBUS_MAX_COMPOSE_ALGORITHM_LEN + 1]; - char *combination_utf8, *nfc; - - if (output_char) - *output_char = 0; - -- if (n_compose >= IBUS_MAX_COMPOSE_LEN) -+ /* Check the IBUS_MAX_COMPOSE_ALGORITHM_LEN length only here instead of -+ * IBUS_MAX_COMPOSE_LEN length. -+ * Because this API calls check_normalize_nfc() which calculates the factorial -+ * of `n_compose` and assigns the value to `n_combinations`. -+ * I.e. 9! == 40320 <= SHRT_MAX == 32767 -+ * The factorial of exceeding INT_MAX spends a long time in check_normalize_nfc() -+ * and causes a D-Bus timeout between GTK clients and IBusEngineSimple. -+ * Currenlty IBUS_MAX_COMPOSE_LEN is much larger and supports the long compose -+ * sequence however the max 9 would be enough for this mechanical compose. -+ */ -+ if (n_compose > IBUS_MAX_COMPOSE_ALGORITHM_LEN) - return FALSE; - - for (i = 0; i < n_compose && IS_DEAD_KEY (compose_buffer[i]); i++) --- -2.34.1 - -From df664b1f18a9c630ccd884f8ff698abf6cbb1578 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Tue, 1 Mar 2022 19:23:25 +0900 -Subject: [PATCH] src/ibusenginesimple: Support GTK4 coompose file - -Load $XDG_CONFIG_HOME/gtk-4.0/Compose ---- - src/ibusenginesimple.c | 27 +++++++++++++++------------ - 1 file changed, 15 insertions(+), 12 deletions(-) - -diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c -index a80e41a5..c57a3ea5 100644 ---- a/src/ibusenginesimple.c -+++ b/src/ibusenginesimple.c -@@ -1448,8 +1448,16 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, - g_free (path); - return retval; - } -- g_free (path); -- path = NULL; -+ g_clear_pointer(&path, g_free); -+ -+ path = g_build_filename (g_get_user_config_dir (), -+ "gtk-4.0", "Compose", NULL); -+ if (g_file_test (path, G_FILE_TEST_EXISTS)) { -+ ibus_engine_simple_add_compose_file (simple, path); -+ g_free (path); -+ return retval; -+ } -+ g_clear_pointer(&path, g_free); - - path = g_build_filename (g_get_user_config_dir (), - "gtk-3.0", "Compose", NULL); -@@ -1458,8 +1466,7 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, - g_free (path); - return retval; - } -- g_free (path); -- path = NULL; -+ g_clear_pointer(&path, g_free); - - home = g_get_home_dir (); - if (home == NULL) -@@ -1471,8 +1478,7 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, - g_free (path); - return retval; - } -- g_free (path); -- path = NULL; -+ g_clear_pointer(&path, g_free); - - #if GLIB_CHECK_VERSION (2, 58, 0) - langs = g_get_language_names_with_category ("LC_CTYPE"); -@@ -1508,8 +1514,7 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, - - if (g_file_test (path, G_FILE_TEST_EXISTS)) - break; -- g_free (path); -- path = NULL; -+ g_clear_pointer(&path, g_free); - } - - #if !GLIB_CHECK_VERSION (2, 58, 0) -@@ -1518,15 +1523,13 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, - - if (path != NULL) - ibus_engine_simple_add_compose_file (simple, path); -- g_free (path); -- path = NULL; -+ g_clear_pointer(&path, g_free); - } else { - path = g_build_filename (X11_DATADIR, locale, "Compose", NULL); - do { - if (g_file_test (path, G_FILE_TEST_EXISTS)) - break; -- g_free (path); -- path = NULL; -+ g_clear_pointer(&path, g_free); - } while (0); - if (path == NULL) - return retval; --- -2.34.1 - -From 5ad3d8d5296cd337d3b41730406680eb9b250f8f Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 4 Mar 2022 20:50:08 +0900 -Subject: [PATCH] ui/gtk3: Use XDG_SESSION_DESKTOP for Plasma desktop - -If ibus-dameon is launched from systemd, XDG_CURRENT_DESKTOP -environment variable could be set after ibus-dameon would be -launched and XDG_CURRENT_DESKTOP could be "(null)". -But XDG_SESSION_DESKTOP can be set with systemd's PAM. ---- - ui/gtk3/panel.vala | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - -diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala -index ab2005d7..bfd6ef56 100644 ---- a/ui/gtk3/panel.vala -+++ b/ui/gtk3/panel.vala -@@ -3,7 +3,7 @@ - * ibus - The Input Bus - * - * Copyright(c) 2011-2014 Peng Huang -- * Copyright(c) 2015-2020 Takao Fujwiara -+ * Copyright(c) 2015-2022 Takao Fujwiara - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -260,8 +260,23 @@ class Panel : IBus.PanelService { - - #if INDICATOR - private static bool is_kde() { -- if (Environment.get_variable("XDG_CURRENT_DESKTOP") == "KDE") -+ unowned string? desktop = -+ Environment.get_variable("XDG_CURRENT_DESKTOP"); -+ if (desktop == "KDE") - return true; -+ /* If ibus-dameon is launched from systemd, XDG_CURRENT_DESKTOP -+ * environment variable could be set after ibus-dameon would be -+ * launched and XDG_CURRENT_DESKTOP could be "(null)". -+ * But XDG_SESSION_DESKTOP can be set with systemd's PAM. -+ */ -+ if (desktop == null || desktop == "(null)") -+ desktop = Environment.get_variable("XDG_SESSION_DESKTOP"); -+ if (desktop == "plasma") -+ return true; -+ if (desktop == null) { -+ warning ("XDG_CURRENT_DESKTOP is not exported in your desktop " + -+ "session."); -+ } - warning ("If you launch KDE5 on xterm, " + - "export XDG_CURRENT_DESKTOP=KDE before launch KDE5."); - return false; --- -2.34.1 - -From faf9f0bbb6edf6ed71bba9dcb314493f6b0276ea Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Tue, 1 Mar 2022 19:44:17 +0900 -Subject: [PATCH] client/gtk2: Revert CCedilla change for pt-BR - -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 - -BUG=chromium-os:11421 -BUG=http://codereview.appspot.com/3989060 ---- - client/gtk2/ibusimcontext.c | 33 +-------------------------------- - 1 file changed, 1 insertion(+), 32 deletions(-) - -diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index a5e5e792..e314ae98 100644 ---- a/client/gtk2/ibusimcontext.c -+++ b/client/gtk2/ibusimcontext.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. - * - * 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); - } - --/* 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)); - - g_signal_connect (ibusimcontext->slave, - "commit", --- -2.34.1 - From f7077113eda0068a618a792cd4a7dd9f1a5c2c8e Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Mar 14 2022 05:54:22 +0000 Subject: [PATCH 9/10] Bump to 1.5.26 - Revert CCedilla change for pt-BR --- diff --git a/.gitignore b/.gitignore index 663c5b8..811768b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,4 @@ ibus-1.3.6.tar.gz /ibus-1.5.23.tar.gz /ibus-1.5.24.tar.gz /ibus-1.5.25.tar.gz +/ibus-1.5.26.tar.gz diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch new file mode 100644 index 0000000..b923897 --- /dev/null +++ b/ibus-HEAD.patch @@ -0,0 +1,78 @@ +From 1b5b9548ad418765717ce1fbdc70b3f3eaae67fc 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 + +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 + +BUG=chromium-os:11421 +BUG=http://codereview.appspot.com/3989060 +--- + client/gtk2/ibusimcontext.c | 33 +-------------------------------- + 1 file changed, 1 insertion(+), 32 deletions(-) + +diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c +index a5e5e792..e314ae98 100644 +--- a/client/gtk2/ibusimcontext.c ++++ b/client/gtk2/ibusimcontext.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. + * + * 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); + } + +-/* 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)); + + g_signal_connect (ibusimcontext->slave, + "commit", +-- +2.34.1 + diff --git a/ibus.spec b/ibus.spec index 1551314..7e6cb0b 100644 --- a/ibus.spec +++ b/ibus.spec @@ -38,8 +38,8 @@ %global dbus_python_version 0.83.0 Name: ibus -Version: 1.5.25 -Release: 13%{?dist} +Version: 1.5.26 +Release: 1%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -321,7 +321,6 @@ autoreconf -f -i -v --enable-introspection \ --enable-install-tests \ %{nil} -make -C ui/gtk3 maintainer-clean-generic %make_build @@ -522,6 +521,10 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Mon Mar 14 2022 Takao Fujiwara - 1.5.26-1 +- Bump to 1.5.26 +- Revert CCedilla change for pt-BR + * Fri Mar 04 2022 Takao Fujiwara - 1.5.25-13 - Check XDG_SESSION_DESKTOP for Plasma desktop diff --git a/sources b/sources index 252eebe..ad8fcb3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ibus-1.5.25.tar.gz) = 4b8955a20a1e5a0daf61213817a9697874439866e235e6a7905f5994b145cd5a143e6cfc41f17204a828756baeb8edab70698596731ecebf7f1eea7cc5f36aa6 +SHA512 (ibus-1.5.26.tar.gz) = 923607c17114af673dcc36532fb44a278b61161ee1b7d4e01b2e0dcffc40c95eb91c6416acc9c0da0333e933863e15263e9a5ff1e467cfc02b71398d601b9714 From c9cc2c828643fa009d69627b5950af55933d47d0 Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Mar 28 2022 14:27:42 +0000 Subject: [PATCH 10/10] Update ibus-desktop-testing-runner to always run ibus-daemon directly --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index b923897..ca0a6cb 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -76,3 +76,168 @@ index a5e5e792..e314ae98 100644 -- 2.34.1 +From 37900574934bb01cc31860ae3ae2f668e4360838 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 + +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 + +BUG=https://gitlab.gnome.org/GNOME/gdm/-/issues/777 +--- + src/tests/ibus-desktop-testing-runner.in | 38 +++++++++++++++++++++--- + 1 file changed, 34 insertions(+), 4 deletions(-) + +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 "$@" +-- +2.34.1 + diff --git a/ibus.spec b/ibus.spec index 7e6cb0b..8717311 100644 --- a/ibus.spec +++ b/ibus.spec @@ -39,7 +39,7 @@ Name: ibus Version: 1.5.26 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -521,6 +521,9 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Mon Mar 28 2022 Takao Fujiwara - 1.5.26-2 +- Update ibus-desktop-testing-runner to always run ibus-daemon directly + * Mon Mar 14 2022 Takao Fujiwara - 1.5.26-1 - Bump to 1.5.26 - Revert CCedilla change for pt-BR