update to 1.5.23

This commit is contained in:
zhanzhimin 2021-01-28 15:31:14 +08:00
parent 5e124a9981
commit 167d1b74e4
9 changed files with 461 additions and 829 deletions

View File

@ -1,23 +0,0 @@
diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am
index 1ece234c1..0f307bbdc 100644
--- a/docs/reference/ibus/Makefile.am
+++ b/docs/reference/ibus/Makefile.am
@@ -3,8 +3,8 @@
# ibus - The Input Bus
#
# Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2007-2015 Red Hat, Inc.
-# Copyright (c) 2015 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 2007-2020 Red Hat, Inc.
+# Copyright (c) 2015-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -147,6 +147,6 @@ tmpl-build.stamp: trim-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DO
# clean-local:
# rm -rf tmpl ${DOC_MODULE)
-CLEANFILES+= *.stamp
+CLEANFILES+= *actions *.stamp
-include $(top_srcdir)/git.mk

View File

@ -0,0 +1,76 @@
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..e90dc230c
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,70 @@
+language: c
+compiler: gcc
+os: linux
+
+# Require gettext-0.19.8
+dist: focal
+
+branches:
+ only:
+ - master
+
+# FIXME: Run script in every arch
+arch:
+ - amd64
+ #- ppc64le
+ #- s390x
+ #- arm64
+
+addons:
+ apt:
+ packages:
+ # For autogen.sh
+ - gnome-common
+ - gtk-doc-tools
+ # For make from
+ # https://packages.ubuntu.com/search?searchon=sourcenames&keywords=ibus
+ - desktop-file-utils
+ - gobject-introspection
+ - iso-codes
+ - libdconf-dev
+ - libgirepository1.0-dev
+ - libglib2.0-dev
+ - libgtk-3-bin
+ - libgtk-3-dev
+ - libgtk2.0-dev
+ - libtool
+ - libwayland-dev
+ - python-gi-dev
+ - python3-all
+ - unicode-cldr-core
+ - unicode-data
+ - valac
+
+jobs:
+ include:
+ - name: Build in Ubuntu
+ before_script:
+ - sudo apt-get -qq update
+ script:
+ - set -e
+ - git pull --depth=200
+ # configure options from
+ # https://salsa.debian.org/debian/ibus/-/blob/master/debian/rules
+ - >
+ ./autogen.sh
+ --with-ucd-dir='/usr/share/unicode'
+ # Set the cutom DESTDIR because the default DESTDIR
+ # /home/travis/bulid/fujiwarat/$PKG/ibus/ibus-$VERSION/_inst seems to be
+ # too long and failed to set DESTDIR to install bindings/pygobject/IBus.py
+ - >
+ make distcheck
+ DISTCHECK_CONFIGURE_FLAGS="
+ --enable-gtk-doc
+ --disable-schemas-install
+ --enable-memconf
+ --with-ucd-dir='/usr/share/unicode'
+ "
+ DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress"
+ VERBOSE=1
+ DESTDIR="$HOME/build/$USER/dest"

View File

@ -1,126 +0,0 @@
diff --git a/src/Makefile.am b/src/Makefile.am
index 99de1ab7c..742ee7d78 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,7 +3,7 @@
# ibus - The Input Bus
#
# Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 2015-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
# Copyright (c) 2007-2017 Red Hat, Inc.
#
# This library is free software; you can redistribute it and/or
@@ -248,6 +248,7 @@ AM_CPPFLAGS += -DENABLE_EMOJI_DICT
dictdir = $(pkgdatadir)/dicts
LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml)))
EMOJI_DICT_FILES = $(patsubst %,dicts/emoji-%.dict,$(LANG_FILES))
+# emoji-root.dict, emoji-sr_Cyrl.dict have no contents.
dict_DATA = $(EMOJI_DICT_FILES)
noinst_PROGRAMS += emoji-parser
@@ -265,6 +266,7 @@ dicts/emoji-%.dict: emoji-parser
xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml"; \
plus_comment="derived"; \
fi; \
+ is_skip=0; \
if test x"$*" = xen ; then \
$(builddir)/emoji-parser \
--unicode-emoji-dir $(UNICODE_EMOJI_DIR) \
@@ -279,48 +281,43 @@ dicts/emoji-%.dict: emoji-parser
--xml $(EMOJI_ANNOTATION_DIR)/$*.xml \
$$xml_derived_option \
--out $@; \
+ retval=$$?; \
+ if test $$retval -eq 99 ; then \
+ is_skip=1; \
+ touch $@; \
+ elif test $$retval -ne 0 ; then \
+ echo "Fail to generate $@"; \
+ abrt; \
+ fi; \
fi; \
- echo "Generated $$plus_comment $@"
+ if test $$is_skip -eq 0 ; then \
+ echo "Generated $$plus_comment $@"; \
+ else \
+ echo "Skip $$plus_comment $@"; \
+ fi;
ibusemojigen.h: dicts/emoji-en.dict
$(NULL)
-install-data-hook: $(dict_DATA)
- @$(NORMAL_INSTALL)
+# 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.
+# But we don't want to install the zero size files and delete them
+# in install-data-hook.
+install-data-hook:
$(AM_V_at)list='$(wildcard dicts/*.dict)'; \
test -n "$(dictdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(dictdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(dictdir)" || exit 1; \
- fi; \
for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -s "$$d$$p"; then continue; fi; \
+ basename "$$p"; \
done | \
- while read files; do \
- if [ x$(AM_DEFAULT_VERBOSITY) = x1 ] ; then \
- echo "$(INSTALL_DATA) $$files '$(DESTDIR)$(dictdir)'"; \
- else \
- echo "Installing $$files"; \
- fi; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(dictdir)" || exit $$?; \
+ while read file; do \
+ if test -f "$(DESTDIR)$(dictdir)/$$file"; then \
+ echo "Delete $(DESTDIR)$(dictdir)/$$file"; \
+ rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \
+ fi; \
done
-dict__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- cd "$$dir" && rm -f $$files; }; \
- }
-
-# for make dist
-uninstall-hook:
- @$(NORMAL_UNINSTALL)
- $(AM_V_at)list='$(wildcard dicts/*.dict)'; \
- test -n "$(dictdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(dictdir)'; $(dict__uninstall_files_from_dir)
-
emoji_parser_SOURCES = \
emoji-parser.c \
$(NULL)
diff --git a/src/emoji-parser.c b/src/emoji-parser.c
index 96a779c65..b117b1b41 100644
--- a/src/emoji-parser.c
+++ b/src/emoji-parser.c
@@ -1,7 +1,7 @@
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
/* vim:set et sts=4: */
/* ibus - The Input Bus
- * Copyright (C) 2016-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2016-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
* Copyright (C) 2016 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
@@ -1294,6 +1294,8 @@ main (int argc, char *argv[])
category_file_save (output_category, list);
if (list)
g_slist_free (list);
+ else
+ return 99;
return 0;
}

View File

@ -1,120 +0,0 @@
diff --git a/src/ibustypes.h b/src/ibustypes.h
index 06370a277..798ad04d9 100644
--- a/src/ibustypes.h
+++ b/src/ibustypes.h
@@ -2,7 +2,7 @@
/* vim:set et sts=4: */
/* ibus - The Input Bus
* Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
- * Copyright (C) 2008-2015 Red Hat, Inc.
+ * Copyright (C) 2008-2020 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
@@ -241,29 +241,46 @@ typedef void (* IBusFreeFunc) (gpointer object);
* @IBUS_INPUT_PURPOSE_EMAIL: Edited field expects email address
* @IBUS_INPUT_PURPOSE_NAME: Edited field expects the name of a person
* @IBUS_INPUT_PURPOSE_PASSWORD: Like @IBUS_INPUT_PURPOSE_FREE_FORM,
- * but characters are hidden
+ * but characters are hidden
* @IBUS_INPUT_PURPOSE_PIN: Like @IBUS_INPUT_PURPOSE_DIGITS, but
- * characters are hidden
+ * characters are hidden
+ * @IBUS_INPUT_PURPOSE_TERMINAL: Allow any character, in addition to control
+ * codes. Since 1.5.24
*
* Describes primary purpose of the input context. This information
* is particularly useful to implement intelligent behavior in
* engines, such as automatic input-mode switch and text prediction.
*
+ * Note that the purpose is not meant to impose a totally strict rule
+ * about allowed characters, and does not replace input validation.
+ * It is fine for an on-screen keyboard to let the user override the
+ * character set restriction that is expressed by the purpose. The
+ * application is expected to validate the entry contents, even if
+ * it specified a purpose.
+ *
+ * The difference between @IBUS_INPUT_PURPOSE_DIGITS and
+ * @IBUS_INPUT_PURPOSE_NUMBER is that the former accepts only digits
+ * while the latter also some punctuation (like commas or points, plus,
+ * minus) and “e” or “E” as in 3.14E+000.
+ *
* This enumeration may be extended in the future; engines should
* interpret unknown values as 'free form'.
+ *
+ * Since: 1.5.4
*/
typedef enum
{
- IBUS_INPUT_PURPOSE_FREE_FORM,
- IBUS_INPUT_PURPOSE_ALPHA,
- IBUS_INPUT_PURPOSE_DIGITS,
- IBUS_INPUT_PURPOSE_NUMBER,
- IBUS_INPUT_PURPOSE_PHONE,
- IBUS_INPUT_PURPOSE_URL,
- IBUS_INPUT_PURPOSE_EMAIL,
- IBUS_INPUT_PURPOSE_NAME,
- IBUS_INPUT_PURPOSE_PASSWORD,
- IBUS_INPUT_PURPOSE_PIN
+ IBUS_INPUT_PURPOSE_FREE_FORM,
+ IBUS_INPUT_PURPOSE_ALPHA,
+ IBUS_INPUT_PURPOSE_DIGITS,
+ IBUS_INPUT_PURPOSE_NUMBER,
+ IBUS_INPUT_PURPOSE_PHONE,
+ IBUS_INPUT_PURPOSE_URL,
+ IBUS_INPUT_PURPOSE_EMAIL,
+ IBUS_INPUT_PURPOSE_NAME,
+ IBUS_INPUT_PURPOSE_PASSWORD,
+ IBUS_INPUT_PURPOSE_PIN,
+ IBUS_INPUT_PURPOSE_TERMINAL
} IBusInputPurpose;
/**
@@ -280,24 +297,36 @@ typedef enum
* first word of each sentence
* @IBUS_INPUT_HINT_INHIBIT_OSK: Suggest to not show an onscreen keyboard
* (e.g for a calculator that already has all the keys).
- * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical.
+ * @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
*
* Describes hints that might be taken into account by engines. Note
* that engines may already tailor their behaviour according to the
* #IBusInputPurpose of the entry.
+ *
+ * Some common sense is expected when using these flags - mixing
+ * @IBUS_INPUT_HINT_LOWERCASE with any of the uppercase hints makes no sense.
+ *
+ * This enumeration may be extended in the future; engines should
+ * ignore unknown values.
+ *
+ * Since: 1.5.4
*/
typedef enum
{
- IBUS_INPUT_HINT_NONE = 0,
- IBUS_INPUT_HINT_SPELLCHECK = 1 << 0,
- IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1,
- IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2,
- IBUS_INPUT_HINT_LOWERCASE = 1 << 3,
- IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4,
- IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5,
- IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6,
- IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7,
- IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8
+ IBUS_INPUT_HINT_NONE = 0,
+ IBUS_INPUT_HINT_SPELLCHECK = 1 << 0,
+ IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1,
+ IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2,
+ IBUS_INPUT_HINT_LOWERCASE = 1 << 3,
+ IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4,
+ IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5,
+ IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6,
+ 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
} IBusInputHints;
#endif

Binary file not shown.

BIN
ibus-1.5.23.tar.gz Normal file

Binary file not shown.

View File

@ -1,6 +1,6 @@
From 023d50db40912e4f7ee333543e05995a9c730bae Mon Sep 17 00:00:00 2001 From 41c325dfb32269c9aadfeedb4df44656aac4d883 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com> From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 15 May 2020 21:44:16 +0900 Date: Fri, 20 Nov 2020 09:53:54 +0900
Subject: [PATCH] Fix SEGV in bus_panel_proxy_focus_in() Subject: [PATCH] Fix SEGV in bus_panel_proxy_focus_in()
rhbz#1350291 SEGV in BUS_IS_CONNECTION(skip_connection) in rhbz#1350291 SEGV in BUS_IS_CONNECTION(skip_connection) in
@ -280,12 +280,12 @@ index b7ffbb47..668c8a26 100644
bus->priv->monitor = NULL; bus->priv->monitor = NULL;
} }
diff --git a/ui/gtk3/extension.vala b/ui/gtk3/extension.vala diff --git a/ui/gtk3/extension.vala b/ui/gtk3/extension.vala
index ea3cd464..57ed1357 100644 index a6f2e8e6..b7a04081 100644
--- a/ui/gtk3/extension.vala --- a/ui/gtk3/extension.vala
+++ b/ui/gtk3/extension.vala +++ b/ui/gtk3/extension.vala
@@ -73,6 +73,10 @@ class ExtensionGtk : Gtk.Application { @@ -73,6 +73,10 @@ class ExtensionGtk : Gtk.Application {
string signal_name, string signal_name,
Variant parameters) { Variant parameters) {
debug("signal_name = %s", signal_name); debug("signal_name = %s", signal_name);
+ /* rhbz#1797120 Fix assert(bus.is_connected()) in + /* rhbz#1797120 Fix assert(bus.is_connected()) in
+ * panel_binding_construct() + * panel_binding_construct()

View File

@ -1,599 +1,423 @@
From 7b0d091839a4f1315ba216175fb2787e86f7fa31 Mon Sep 17 00:00:00 2001 From dd4cc5b028c35f9bb8fa9d3bdc8f26bcdfc43d40 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com> From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Tue, 3 Mar 2020 17:08:30 +0900 Date: Wed, 30 Sep 2020 20:35:23 +0900
Subject: [PATCH] src/tests: Delete graves in substitution in Subject: [PATCH] ui/gtk3: Fix arguments in GLib.DBusSignalCallback for Vala
ibus-desktop-testing-runner 0.50
Delete the single quotations to enclose grave chracters because BUG=https://github.com/ibus/ibus/issues/2265
DASH saves the single quoted '`id -u`' as the raw string in the command
substitution not to be extracted.
BUG=https://github.com/ibus/ibus/issues/2189
--- ---
src/tests/ibus-desktop-testing-runner.in | 7 ++++--- ui/gtk3/application.vala | 22 +++++++++++-----------
1 file changed, 4 insertions(+), 3 deletions(-) ui/gtk3/extension.vala | 22 +++++++++++-----------
2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in diff --git a/ui/gtk3/application.vala b/ui/gtk3/application.vala
index 0d9a847c..f9238e69 100755 index cc9ee54c..da65301b 100644
--- a/src/tests/ibus-desktop-testing-runner.in --- a/ui/gtk3/application.vala
+++ b/src/tests/ibus-desktop-testing-runner.in +++ b/ui/gtk3/application.vala
@@ -4,7 +4,7 @@ @@ -3,7 +3,7 @@
# * ibus - The Input Bus
# ibus - The Input Bus *
# * Copyright(c) 2011 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2018-2019 Takao Fujiwara <takao.fujiwara1@gmail.com> - * Copyright(c) 2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 2018-2020 Takao Fujiwara <takao.fujiwara1@gmail.com> + * Copyright(c) 2017-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
# Copyright (c) 2018 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -31,7 +31,8 @@
# POSIX sh has no 'echo -e'
: ${ECHO:='/usr/bin/echo'}
# POSIX sh has $UID
-: ${UID:='`id -u`'}
+# DASH saves the graves in '``' as characters not to be extracted
+: ${UID:=`id -u`}
PROGNAME=`basename $0`
@@ -170,7 +171,7 @@ _EOF
run_dbus_daemon()
{
# Use dbus-launch --exit-with-session later instead of --sh-syntax
- export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
+ export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
}
run_desktop()
--
2.24.1
From 8ce25208c3f4adfd290a032c6aa739d2b7580eb1 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 12 Mar 2020 16:02:16 +0900
Subject: [PATCH] src: Use WAYLAND_DISPLAY on Wayland sessions to make up
IBus socket name
In Wayland sessions, GNOME Shell 3.36 is leveraging 2 X11 Display
connections so one is used to set up all services for a "X11 session"
before user applications connected to the other display might require it.
This allows seamlessly starting Xwayland on demand to X11 user applications.
IBus here belongs to the first described connection, it is started
explicitly on that display by GNOME Shell as it is necessary to set up
ibus-x11 before any other X11 client might want to use it.
However the use of this "secondary" display results in IBus daemon left
unable to talk to applications, as the socket name is dependent on the
DISPLAY envvar and ibus/applications don't agree on its content.
For wayland sessions, make it look for WAYLAND_DISPLAY, as that'll have
the similar "per session bus" behavior that this seems to look after.
BUG=https://gitlab.gnome.org/GNOME/gnome-shell/issues/2341
---
src/ibusshare.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/ibusshare.c b/src/ibusshare.c
index 0d50d3f5..e0ef2ce0 100644
--- a/src/ibusshare.c
+++ b/src/ibusshare.c
@@ -100,6 +100,7 @@ ibus_get_socket_path (void)
gchar *display;
gchar *displaynumber = "0";
/* gchar *screennumber = "0"; */
+ gboolean is_wayland = FALSE;
gchar *p;
path = g_strdup (g_getenv ("IBUS_ADDRESS_FILE"));
@@ -108,13 +109,19 @@ ibus_get_socket_path (void)
}
if (_display == NULL) {
- display = g_strdup (g_getenv ("DISPLAY"));
+ display = g_strdup (g_getenv ("WAYLAND_DISPLAY"));
+ if (display)
+ is_wayland = TRUE;
+ else
+ display = g_strdup (g_getenv ("DISPLAY"));
}
else {
display = g_strdup (_display);
}
- if (display) {
+ if (is_wayland) {
+ displaynumber = display;
+ } else if (display) {
p = display;
hostname = display;
for (; *p != ':' && *p != '\0'; p++);
--
2.24.1
From 5765bfd69fb2ab1174378fbb0d8cac7f2bd2610f Mon Sep 17 00:00:00 2001
From: Changwoo Ryu <cwryu@debian.org>
Date: Wed, 15 Apr 2020 17:43:14 +0900
Subject: [PATCH] client/gtk2: Remove glib_check_version() in gtk immodule
In the gtk2/gtk3 immodule, glib_check_version() is being used to make sure
that the installed glib version is not older than the glib version which ibus
is built with.
But there is no reason why glib version is checked in runtime. Library
compatibility is already being checked more precisely by packaging systems and
linkers.
This version check can break the ibus gtk immodule when used with an older but
compatible version of glib, such as glib 2.62.x which is compatible with
2.64.x.
BUG=https://github.com/ibus/ibus/issues/2200
---
client/gtk2/ibusim.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/client/gtk2/ibusim.c b/client/gtk2/ibusim.c
index bfacd0f0..d70800d3 100644
--- a/client/gtk2/ibusim.c
+++ b/client/gtk2/ibusim.c
@@ -41,9 +41,7 @@ static const GtkIMContextInfo *info_list[] = {
G_MODULE_EXPORT const gchar*
g_module_check_init (GModule *module)
{
- return glib_check_version (GLIB_MAJOR_VERSION,
- GLIB_MINOR_VERSION,
- 0);
+ return null;
}
G_MODULE_EXPORT void
--
2.24.1
From 8da016764cee9616cca4658d1fb311d6b3bfc0df Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Wed, 15 Apr 2020 17:55:03 +0900
Subject: [PATCH] src/tests: Fix to get focus events with su in
ibus-desktop-testing-runner
GtkWindow haven't received focus events in any test cases since Fedora 31
whenever Ansible runs ibus-desktop-testing-runner after `su root`.
Seems su command does not run systemd automatically and now systemd
requires XDG_RUNTIME_DIR and Ansible requires root access with ssh.
This fix requires to restart sshd with modified /etc/ssh/sshd_config
with "PermitRootLogin yes" in order to run with su command.
Ansible with ibus-desktop-testin-runner has worked fine if root console
login is used without this patch because PAM runs systemd by login.
---
src/tests/ibus-desktop-testing-runner.in | 36 ++++++++++++++++++++++--
1 file changed, 33 insertions(+), 3 deletions(-)
diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in
index f9238e69..f760fd5b 100755
--- a/src/tests/ibus-desktop-testing-runner.in
+++ b/src/tests/ibus-desktop-testing-runner.in
@@ -49,6 +49,7 @@ PID_XORG=0
PID_GNOME_SESSION=0
TESTING_RUNNER="default"
TESTS=""
+TIMEOUT=300
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'
@@ -84,6 +85,7 @@ usage()
"-r, --runner=RUNNER Run TESTS programs with a test RUNNER.\n" \
" RUNNDER = gnome or default.\n" \
" default is an embedded runner.\n" \
+"-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" \
""
@@ -92,8 +94,8 @@ usage()
parse_args()
{
# This is GNU getopt. "sudo port getopt" in BSD?
- ARGS=`getopt -o hvb:s:cd:t:r:o:O: --long \
- help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,output:,result:\
+ ARGS=`getopt -o hvb:s:cd:t:r:T:o:O: --long \
+ help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,timeout:,output:,result:\
-- "$@"`;
eval set -- "$ARGS"
while [ 1 ] ; do
@@ -106,6 +108,7 @@ parse_args()
-d | --desktop ) DESKTOP_COMMAND="$2"; shift 2;;
-t | --tests ) TESTS="$2"; shift 2;;
-r | --runner ) TESTING_RUNNER="$2"; shift 2;;
+ -T | --timeout ) TIMEOUT="$2"; shift 2;;
-o | --output ) TEST_LOG="$2"; shift 2;;
-O | --result ) RESULT_LOG="$2"; shift 2;;
-- ) shift; break;;
@@ -166,11 +169,37 @@ _EOF
fi
# `su` command does not run loginctl
export XDG_SESSION_TYPE='x11'
+ export XDG_SESSION_CLASS=user
+ # `su` command does not get focus in events without this variable.
+ # Need to restart sshd after set "PermitRootLogin yes" in sshd_config
+ if [ "x$XDG_RUNTIME_DIR" = x ] ; then
+ export XDG_RUNTIME_DIR=/run/user/$UID
+ is_root_login=`grep "^PermitRootLogin" /etc/ssh/sshd_config | grep yes`
+ if [ "x$ANSIBLE" != x ] && [ "x$is_root_login" = x ] ; then
+ print_log -e "${RED}FAIL${NC}: No permission to get focus-in events in GtkWindow with ansible"
+ echo "su command does not configure necessary login info " \
+ "with systemd and GtkWindow cannot receive focus-events " \
+ "when ibus-desktop-testing-runner is executed by " \
+ "ansible-playbook." >> $TEST_LOG
+ echo "Enabling root login via sshd, restarting sshd, set " \
+ "XDG_RUNTIME_DIR can resolve the problem under " \
+ "ansible-playbook." >> $TEST_LOG
+ exit 255
+ fi
+ fi
+ # Do we need XDG_SESSION_ID and XDG_SEAT?
+ #export XDG_CONFIG_DIRS=/etc/xdg
+ #export XDG_SESSION_ID=10
+ #export XDG_SESSION_DESKTOP=gnome
+ #export XDG_SEAT=seat0
}
run_dbus_daemon()
{
# Use dbus-launch --exit-with-session later instead of --sh-syntax
+ # GNOME uses a unix:abstract address and it effects gsettings set values
+ # in each test case.
+ # TODO: Should we comment out this line?
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
}
@@ -288,7 +317,8 @@ run_gnome_desktop_testing_runner()
fail=1
continue
fi
- gnome-desktop-testing-runner $tst 2>>$TEST_LOG 1>>$TEST_LOG
+ gnome-desktop-testing-runner --timeout=$TIMEOUT $tst \
+ 2>>$TEST_LOG 1>>$TEST_LOG
retval=$?
read pass fail << EOF
`count_case_result $retval $pass $fail`
--
2.24.1
From 0b9d9365988a96a2bc31c48624f9c2b8081601b6 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Wed, 22 Apr 2020 20:17:12 +0900
Subject: [PATCH] client/gtk2: Fix typo
---
client/gtk2/ibusim.c | 4 ++--
src/tests/ibus-desktop-testing-runner.in | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/client/gtk2/ibusim.c b/client/gtk2/ibusim.c
index d70800d3..55609ce7 100644
--- a/client/gtk2/ibusim.c
+++ b/client/gtk2/ibusim.c
@@ -2,7 +2,7 @@
/* vim:set et ts=4: */
/* ibus - The Input Bus
* Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
- * Copyright (C) 2008-2010 Red Hat, Inc.
+ * Copyright (C) 2008-2020 Red Hat, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@@ -41,7 +41,7 @@ static const GtkIMContextInfo *info_list[] = { @@ -69,22 +69,22 @@ class Application {
G_MODULE_EXPORT const gchar* }
g_module_check_init (GModule *module)
{
- return null;
+ return NULL;
}
G_MODULE_EXPORT void private void bus_name_acquired_cb(DBusConnection connection,
diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in - string sender_name,
index f760fd5b..4232c549 100755 - string object_path,
--- a/src/tests/ibus-desktop-testing-runner.in - string interface_name,
+++ b/src/tests/ibus-desktop-testing-runner.in - string signal_name,
@@ -173,7 +173,7 @@ _EOF - Variant parameters) {
# `su` command does not get focus in events without this variable. + string? sender_name,
# Need to restart sshd after set "PermitRootLogin yes" in sshd_config + string object_path,
if [ "x$XDG_RUNTIME_DIR" = x ] ; then + string interface_name,
- export XDG_RUNTIME_DIR=/run/user/$UID + string signal_name,
+ export XDG_RUNTIME_DIR="/run/user/$UID" + Variant parameters) {
is_root_login=`grep "^PermitRootLogin" /etc/ssh/sshd_config | grep yes` debug("signal_name = %s", signal_name);
if [ "x$ANSIBLE" != x ] && [ "x$is_root_login" = x ] ; then m_panel = new Panel(m_bus);
print_log -e "${RED}FAIL${NC}: No permission to get focus-in events in GtkWindow with ansible" m_panel.load_settings();
}
private void bus_name_lost_cb(DBusConnection connection,
- string sender_name,
- string object_path,
- string interface_name,
- string signal_name,
- Variant parameters) {
+ string? sender_name,
+ string object_path,
+ string interface_name,
+ string signal_name,
+ Variant parameters) {
// "Destroy" dbus method was called before this callback is called.
// "Destroy" dbus method -> ibus_service_destroy()
// -> g_dbus_connection_unregister_object()
diff --git a/ui/gtk3/extension.vala b/ui/gtk3/extension.vala
index ea3cd464..a6f2e8e6 100644
--- a/ui/gtk3/extension.vala
+++ b/ui/gtk3/extension.vala
@@ -3,7 +3,7 @@
* ibus - The Input Bus
*
* Copyright(c) 2018 Peng Huang <shawn.p.huang@gmail.com>
- * Copyright(c) 2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright(c) 2018-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -67,22 +67,22 @@ class ExtensionGtk : Gtk.Application {
private void bus_name_acquired_cb(DBusConnection connection,
- string sender_name,
- string object_path,
- string interface_name,
- string signal_name,
- Variant parameters) {
+ string? sender_name,
+ string object_path,
+ string interface_name,
+ string signal_name,
+ Variant parameters) {
debug("signal_name = %s", signal_name);
m_panel = new PanelBinding(m_bus, this);
m_panel.load_settings();
}
private void bus_name_lost_cb(DBusConnection connection,
- string sender_name,
- string object_path,
- string interface_name,
- string signal_name,
- Variant parameters) {
+ string? sender_name,
+ string object_path,
+ string interface_name,
+ string signal_name,
+ Variant parameters) {
// "Destroy" dbus method was called before this callback is called.
// "Destroy" dbus method -> ibus_service_destroy()
// -> g_dbus_connection_unregister_object()
-- --
2.24.1 2.24.1
From 8c4125bc78ce3502b5aeb053e7029cc2594f83f2 Mon Sep 17 00:00:00 2001 From 02338ce751a1ed5b9b892fba530ec2fe211d314e Mon Sep 17 00:00:00 2001
From: Changwoo Ryu <cwryu@debian.org> From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Sun, 12 Apr 2020 05:28:15 +0900 Date: Fri, 20 Nov 2020 08:58:52 +0900
Subject: [PATCH] src: Build the Emoji dictionaries in parallel Subject: [PATCH] docs: Fix make dist
Instead of building Emoji dictionaries src/dicts/emoji-*.dict in sequence, a
pattern rule is specified for them. The make -jN option builds the
dictionaries in parallel.
The GNU make extensions like pattern rule and patsubst function are used for
it. But src/Makefile.am has had other GNU make extensions for a while, so
using more extensions should not make portability worse.
BUG=https://github.com/ibus/ibus/pull/2209
--- ---
src/Makefile.am | 55 ++++++++++++++++++++++++------------------------- docs/reference/ibus/Makefile.am | 6 +++---
1 file changed, 27 insertions(+), 28 deletions(-) 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am
index 1ece234c..0f307bbd 100644
--- a/docs/reference/ibus/Makefile.am
+++ b/docs/reference/ibus/Makefile.am
@@ -3,8 +3,8 @@
# ibus - The Input Bus
#
# Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2007-2015 Red Hat, Inc.
-# Copyright (c) 2015 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 2007-2020 Red Hat, Inc.
+# Copyright (c) 2015-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -147,6 +147,6 @@ tmpl-build.stamp: trim-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DO
# clean-local:
# rm -rf tmpl ${DOC_MODULE)
-CLEANFILES+= *.stamp
+CLEANFILES+= *actions *.stamp
-include $(top_srcdir)/git.mk
--
2.24.1
From aa558de80c224921753990806cf553428fbe7057 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 20 Nov 2020 09:03:32 +0900
Subject: [PATCH] src: Fix to build emoji-*.dict in CLDR 38
root.xml and sr_Cyrl.xml have included no contents since
cldr-emoji-annotation-38 and make install failed because of no
emoji-root.dict and emoji-sr.Cyrl.dict.
Now the build creates the no content files but remove those files
in the install hook.
BUG=rhbz#1898065
---
src/Makefile.am | 61 ++++++++++++++++++++++------------------------
src/emoji-parser.c | 4 ++-
2 files changed, 32 insertions(+), 33 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am diff --git a/src/Makefile.am b/src/Makefile.am
index a8e3d07d..99de1ab7 100644 index 99de1ab7..742ee7d7 100644
--- a/src/Makefile.am --- a/src/Makefile.am
+++ b/src/Makefile.am +++ b/src/Makefile.am
@@ -246,42 +246,41 @@ if ENABLE_EMOJI_DICT @@ -3,7 +3,7 @@
AM_CPPFLAGS += -DENABLE_EMOJI_DICT # ibus - The Input Bus
#
# Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 2015-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
# Copyright (c) 2007-2017 Red Hat, Inc.
#
# This library is free software; you can redistribute it and/or
@@ -248,6 +248,7 @@ AM_CPPFLAGS += -DENABLE_EMOJI_DICT
dictdir = $(pkgdatadir)/dicts dictdir = $(pkgdatadir)/dicts
-dict_DATA = dicts/emoji-en.dict
LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml))) LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml)))
+EMOJI_DICT_FILES = $(patsubst %,dicts/emoji-%.dict,$(LANG_FILES)) EMOJI_DICT_FILES = $(patsubst %,dicts/emoji-%.dict,$(LANG_FILES))
+dict_DATA = $(EMOJI_DICT_FILES) +# emoji-root.dict, emoji-sr_Cyrl.dict have no contents.
dict_DATA = $(EMOJI_DICT_FILES)
noinst_PROGRAMS += emoji-parser noinst_PROGRAMS += emoji-parser
@@ -265,6 +266,7 @@ dicts/emoji-%.dict: emoji-parser
-dicts/emoji-en.dict: emoji-parser xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml"; \
+dicts/emoji-%.dict: emoji-parser
$(AM_V_at)if test x"$(LANG_FILES)" = x ; then \
echo "WARNING: Not found $(EMOJI_ANNOTATION_DIR)/en.xml" 1>&2; \
fi; \
- for f in $(LANG_FILES) ; do \
- if test -f dicts/emoji-$$f.dict; then \
- echo "Already exists dicts/emoji-$$f.dict"; \
- continue; \
- fi; \
- if test -f \
- "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml" ; then \
- xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml"; \
+ if test -f $@; then \
+ echo "Already exists $@"; \
+ exit 0; \
+ fi; \
+ if test -f \
+ "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml" ; then \
+ xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml"; \
plus_comment="derived"; \ plus_comment="derived"; \
- fi; \ fi; \
- if test x"$$f" = xen ; then \ + is_skip=0; \
- $(builddir)/emoji-parser \ if test x"$*" = xen ; then \
- --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ $(builddir)/emoji-parser \
- --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \
- $$xml_derived_option \ @@ -279,48 +281,43 @@ dicts/emoji-%.dict: emoji-parser
- --xml-ascii $(top_srcdir)/data/annotations/en_ascii.xml \ --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \
- --out-category ibusemojigen.h \ $$xml_derived_option \
- --out $@; \ --out $@; \
- else \ + retval=$$?; \
- $(builddir)/emoji-parser \ + if test $$retval -eq 99 ; then \
- --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ + is_skip=1; \
- --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ + touch $@; \
- $$xml_derived_option \ + elif test $$retval -ne 0 ; then \
- --out dicts/emoji-$$f.dict; \ + echo "Fail to generate $@"; \
- fi; \ + abrt; \
- echo "Generated $$plus_comment dicts/emoji-$$f.dict"; \ + fi; \
- done fi; \
+ fi; \ - echo "Generated $$plus_comment $@"
+ if test x"$*" = xen ; then \ + if test $$is_skip -eq 0 ; then \
+ $(builddir)/emoji-parser \ + echo "Generated $$plus_comment $@"; \
+ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \
+ --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \
+ $$xml_derived_option \
+ --xml-ascii $(top_srcdir)/data/annotations/en_ascii.xml \
+ --out-category ibusemojigen.h \
+ --out $@; \
+ else \ + else \
+ $(builddir)/emoji-parser \ + echo "Skip $$plus_comment $@"; \
+ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ + fi;
+ --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \
+ $$xml_derived_option \
+ --out $@; \
+ fi; \
+ echo "Generated $$plus_comment $@"
ibusemojigen.h: dicts/emoji-en.dict ibusemojigen.h: dicts/emoji-en.dict
$(NULL) $(NULL)
--
2.23.0.rc1
From 02105c4d486283e6b561181d9c934d4d23f2d65e Mon Sep 17 00:00:00 2001 -install-data-hook: $(dict_DATA)
From: fujiwarat <takao.fujiwara1@gmail.com> - @$(NORMAL_INSTALL)
Date: Thu, 14 May 2020 15:48:34 +0900 +# We put dicts/emoji-%.dict as the make target for the parallel build
Subject: [PATCH] bus: Fix SEGV in bus_panel_proxy_focus_in() +# and the make target has to be genarated even if the file size is zero.
+# But we don't want to install the zero size files and delete them
+# in install-data-hook.
+install-data-hook:
$(AM_V_at)list='$(wildcard dicts/*.dict)'; \
test -n "$(dictdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(dictdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(dictdir)" || exit 1; \
- fi; \
for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -s "$$d$$p"; then continue; fi; \
+ basename "$$p"; \
done | \
- while read files; do \
- if [ x$(AM_DEFAULT_VERBOSITY) = x1 ] ; then \
- echo "$(INSTALL_DATA) $$files '$(DESTDIR)$(dictdir)'"; \
- else \
- echo "Installing $$files"; \
- fi; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(dictdir)" || exit $$?; \
+ while read file; do \
+ if test -f "$(DESTDIR)$(dictdir)/$$file"; then \
+ echo "Delete $(DESTDIR)$(dictdir)/$$file"; \
+ rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \
+ fi; \
done
SEGV in BUS_IS_PANEL_PROXY() in bus_panel_proxy_focus_in() -dict__uninstall_files_from_dir = { \
Check if GDBusConnect is closed before bus_panel_proxy_new() is called. - test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
BUG=rhbz#1349148 - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
BUG=rhbz#1385349 - cd "$$dir" && rm -f $$files; }; \
--- - }
bus/ibusimpl.c | 25 ++++++++++++++++++++----- -
1 file changed, 20 insertions(+), 5 deletions(-) -# for make dist
-uninstall-hook:
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c - @$(NORMAL_UNINSTALL)
index 85761d30..e432e849 100644 - $(AM_V_at)list='$(wildcard dicts/*.dict)'; \
--- a/bus/ibusimpl.c - test -n "$(dictdir)" || list=; \
+++ b/bus/ibusimpl.c - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
@@ -2,8 +2,8 @@ - dir='$(DESTDIR)$(dictdir)'; $(dict__uninstall_files_from_dir)
-
emoji_parser_SOURCES = \
emoji-parser.c \
$(NULL)
diff --git a/src/emoji-parser.c b/src/emoji-parser.c
index 96a779c6..b117b1b4 100644
--- a/src/emoji-parser.c
+++ b/src/emoji-parser.c
@@ -1,7 +1,7 @@
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
/* vim:set et sts=4: */ /* vim:set et sts=4: */
/* ibus - The Input Bus /* ibus - The Input Bus
* Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com> - * Copyright (C) 2016-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
- * Copyright (C) 2011-2019 Takao Fujiwara <takao.fujiwara1@gmail.com> + * Copyright (C) 2016-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
- * Copyright (C) 2008-2019 Red Hat, Inc. * Copyright (C) 2016 Red Hat, Inc.
+ * Copyright (C) 2011-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2008-2020 Red Hat, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public @@ -1294,6 +1294,8 @@ main (int argc, char *argv[])
@@ -464,13 +464,16 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus, category_file_save (output_category, list);
else if (!g_strcmp0 (name, IBUS_SERVICE_PANEL_EXTENSION_EMOJI)) if (list)
panel_type = PANEL_TYPE_EXTENSION_EMOJI; g_slist_free (list);
+ else
+ return 99;
- if (panel_type != PANEL_TYPE_NONE) { return 0;
+ do {
+ if (panel_type == PANEL_TYPE_NONE)
+ break;
if (g_strcmp0 (new_name, "") != 0) {
/* a Panel process is started. */
BusConnection *connection;
BusInputContext *context = NULL;
BusPanelProxy **panel = (panel_type == PANEL_TYPE_PANEL) ?
&ibus->panel : &ibus->emoji_extension;
+ GDBusConnection *dbus_connection = NULL;
if (*panel != NULL) {
ibus_proxy_destroy ((IBusProxy *)(*panel));
@@ -479,9 +482,21 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus,
g_assert (*panel == NULL);
}
- connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, new_name);
+ connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS,
+ new_name);
g_return_if_fail (connection != NULL);
+ dbus_connection = bus_connection_get_dbus_connection (connection);
+ /* rhbz#1349148 rhbz#1385349
+ * Avoid SEGV of BUS_IS_PANEL_PROXY (ibus->panel)
+ * This function is called during destroying the connection
+ * in this case? */
+ if (dbus_connection == NULL ||
+ g_dbus_connection_is_closed (dbus_connection)) {
+ new_name = "";
+ break;
+ }
+
*panel = bus_panel_proxy_new (connection, panel_type);
if (panel_type == PANEL_TYPE_EXTENSION_EMOJI)
ibus->enable_emoji_extension = FALSE;
@@ -535,7 +550,7 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus,
}
}
}
- }
+ } while (0);
bus_ibus_impl_component_name_owner_changed (ibus, name, old_name, new_name);
} }
-- --
2.24.1 2.24.1
From f591381e3c892947ecaffe9131b9039ab9014498 Mon Sep 17 00:00:00 2001 From b72efea42d5f72e08e2774ae03027c246d41cab7 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com> From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Thu, 14 May 2020 16:02:00 +0900 Date: Fri, 20 Nov 2020 10:56:11 +0900
Subject: [PATCH] bus: Fix SEGV in bus_dbus_impl_name_owner_changed() Subject: [PATCH] src: Update IBusInputPurpose and IBusInputHints in
ibustypes.h
rhbz#1406699 SEGV in new_owner!=NULL in bus_dbus_impl_name_owner_changed() Copy IBUS_INPUT_PURPOSE_TERMINAL, IBUS_INPUT_PURPOSE_PIN,
which is called by bus_name_service_remove_owner() IBUS_INPUT_PURPOSE_TERMINAL from GTK 3.24.14
If bus_connection_get_unique_name()==NULL, set new_owner="" in
bus_name_service_remove_owner()
rhbz#1432252 SEGV in old_owner!=NULL in bus_dbus_impl_name_owner_changed()
which is called by bus_name_service_set_primary_owner()
If bus_connection_get_unique_name()==NULL, set old_owner="" in
bus_name_service_set_primary_owner()
BUG=rhbz#1406699
BUG=rhbz#1432252
--- ---
bus/dbusimpl.c | 27 +++++++++++++++++++++++---- src/ibustypes.h | 77 ++++++++++++++++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 4 deletions(-) 1 file changed, 53 insertions(+), 24 deletions(-)
diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c diff --git a/src/ibustypes.h b/src/ibustypes.h
index b54ef817..59787a80 100644 index 06370a27..798ad04d 100644
--- a/bus/dbusimpl.c --- a/src/ibustypes.h
+++ b/bus/dbusimpl.c +++ b/src/ibustypes.h
@@ -2,7 +2,8 @@ @@ -2,7 +2,7 @@
/* vim:set et sts=4: */ /* vim:set et sts=4: */
/* ibus - The Input Bus /* ibus - The Input Bus
* Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com> * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
- * Copyright (C) 2008-2013 Red Hat, Inc. - * Copyright (C) 2008-2015 Red Hat, Inc.
+ * Copyright (C) 2015-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2008-2020 Red Hat, Inc. + * Copyright (C) 2008-2020 Red Hat, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@@ -344,6 +345,8 @@ bus_name_service_set_primary_owner (BusNameService *service, @@ -241,29 +241,46 @@ typedef void (* IBusFreeFunc) (gpointer object);
BusConnectionOwner *owner, * @IBUS_INPUT_PURPOSE_EMAIL: Edited field expects email address
BusDBusImpl *dbus) * @IBUS_INPUT_PURPOSE_NAME: Edited field expects the name of a person
* @IBUS_INPUT_PURPOSE_PASSWORD: Like @IBUS_INPUT_PURPOSE_FREE_FORM,
- * but characters are hidden
+ * but characters are hidden
* @IBUS_INPUT_PURPOSE_PIN: Like @IBUS_INPUT_PURPOSE_DIGITS, but
- * characters are hidden
+ * characters are hidden
+ * @IBUS_INPUT_PURPOSE_TERMINAL: Allow any character, in addition to control
+ * codes. Since 1.5.24
*
* Describes primary purpose of the input context. This information
* is particularly useful to implement intelligent behavior in
* engines, such as automatic input-mode switch and text prediction.
*
+ * Note that the purpose is not meant to impose a totally strict rule
+ * about allowed characters, and does not replace input validation.
+ * It is fine for an on-screen keyboard to let the user override the
+ * character set restriction that is expressed by the purpose. The
+ * application is expected to validate the entry contents, even if
+ * it specified a purpose.
+ *
+ * The difference between @IBUS_INPUT_PURPOSE_DIGITS and
+ * @IBUS_INPUT_PURPOSE_NUMBER is that the former accepts only digits
+ * while the latter also some punctuation (like commas or points, plus,
+ * minus) and “e” or “E” as in 3.14E+000.
+ *
* This enumeration may be extended in the future; engines should
* interpret unknown values as 'free form'.
+ *
+ * Since: 1.5.4
*/
typedef enum
{ {
+ gboolean has_old_owner = FALSE; - IBUS_INPUT_PURPOSE_FREE_FORM,
+ - IBUS_INPUT_PURPOSE_ALPHA,
g_assert (service != NULL); - IBUS_INPUT_PURPOSE_DIGITS,
g_assert (owner != NULL); - IBUS_INPUT_PURPOSE_NUMBER,
g_assert (dbus != NULL); - IBUS_INPUT_PURPOSE_PHONE,
@@ -351,6 +354,13 @@ bus_name_service_set_primary_owner (BusNameService *service, - IBUS_INPUT_PURPOSE_URL,
BusConnectionOwner *old = service->owners != NULL ? - IBUS_INPUT_PURPOSE_EMAIL,
(BusConnectionOwner *)service->owners->data : NULL; - IBUS_INPUT_PURPOSE_NAME,
- IBUS_INPUT_PURPOSE_PASSWORD,
- IBUS_INPUT_PURPOSE_PIN
+ IBUS_INPUT_PURPOSE_FREE_FORM,
+ IBUS_INPUT_PURPOSE_ALPHA,
+ IBUS_INPUT_PURPOSE_DIGITS,
+ IBUS_INPUT_PURPOSE_NUMBER,
+ IBUS_INPUT_PURPOSE_PHONE,
+ IBUS_INPUT_PURPOSE_URL,
+ IBUS_INPUT_PURPOSE_EMAIL,
+ IBUS_INPUT_PURPOSE_NAME,
+ IBUS_INPUT_PURPOSE_PASSWORD,
+ IBUS_INPUT_PURPOSE_PIN,
+ IBUS_INPUT_PURPOSE_TERMINAL
} IBusInputPurpose;
+ /* rhbz#1432252 If bus_connection_get_unique_name() == NULL, /**
+ * "Hello" method is not received yet. @@ -280,24 +297,36 @@ typedef enum
+ */ * first word of each sentence
+ if (old != NULL && bus_connection_get_unique_name (old->conn) != NULL) { * @IBUS_INPUT_HINT_INHIBIT_OSK: Suggest to not show an onscreen keyboard
+ has_old_owner = TRUE; * (e.g for a calculator that already has all the keys).
+ } - * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical.
+ + * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. Since 1.5.11
if (old != NULL) { + * @IBUS_INPUT_HINT_EMOJI: Suggest offering Emoji support. Since 1.5.24
g_signal_emit (dbus, + * @IBUS_INPUT_HINT_NO_EMOJI: Suggest not offering Emoji support. Since 1.5.24
dbus_signals[NAME_LOST], *
@@ -370,7 +380,8 @@ bus_name_service_set_primary_owner (BusNameService *service, * Describes hints that might be taken into account by engines. Note
0, * that engines may already tailor their behaviour according to the
owner->conn, * #IBusInputPurpose of the entry.
service->name, + *
- old != NULL ? bus_connection_get_unique_name (old->conn) : "", + * Some common sense is expected when using these flags - mixing
+ has_old_owner ? bus_connection_get_unique_name (old->conn) : + * @IBUS_INPUT_HINT_LOWERCASE with any of the uppercase hints makes no sense.
+ "", + *
bus_connection_get_unique_name (owner->conn)); + * This enumeration may be extended in the future; engines should
+ * ignore unknown values.
if (old != NULL && old->do_not_queue != 0) { + *
@@ -427,6 +438,7 @@ bus_name_service_remove_owner (BusNameService *service, + * Since: 1.5.4
BusDBusImpl *dbus) */
typedef enum
{ {
GSList *owners; - IBUS_INPUT_HINT_NONE = 0,
+ gboolean has_new_owner = FALSE; - IBUS_INPUT_HINT_SPELLCHECK = 1 << 0,
- IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1,
- IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2,
- IBUS_INPUT_HINT_LOWERCASE = 1 << 3,
- IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4,
- IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5,
- IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6,
- IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7,
- IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8
+ IBUS_INPUT_HINT_NONE = 0,
+ IBUS_INPUT_HINT_SPELLCHECK = 1 << 0,
+ IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1,
+ IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2,
+ IBUS_INPUT_HINT_LOWERCASE = 1 << 3,
+ IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4,
+ IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5,
+ IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6,
+ 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
} IBusInputHints;
g_assert (service != NULL); #endif
g_assert (owner != NULL);
@@ -439,6 +451,13 @@ bus_name_service_remove_owner (BusNameService *service,
BusConnectionOwner *_new = NULL;
if (owners->next != NULL) {
_new = (BusConnectionOwner *)owners->next->data;
+ /* rhbz#1406699 If bus_connection_get_unique_name() == NULL,
+ * "Hello" method is not received yet.
+ */
+ if (_new != NULL &&
+ bus_connection_get_unique_name (_new->conn) != NULL) {
+ has_new_owner = TRUE;
+ }
}
if (dbus != NULL) {
@@ -447,7 +466,7 @@ bus_name_service_remove_owner (BusNameService *service,
0,
owner->conn,
service->name);
- if (_new != NULL) {
+ if (has_new_owner) {
g_signal_emit (dbus,
dbus_signals[NAME_ACQUIRED],
0,
@@ -460,7 +479,7 @@ bus_name_service_remove_owner (BusNameService *service,
_new != NULL ? _new->conn : NULL,
service->name,
bus_connection_get_unique_name (owner->conn),
- _new != NULL ? bus_connection_get_unique_name (_new->conn) : "");
+ has_new_owner ? bus_connection_get_unique_name (_new->conn) : "");
}
}
-- --
2.24.1 2.24.1

View File

@ -5,8 +5,8 @@
%global dbus_python_version 0.83.0 %global dbus_python_version 0.83.0
Name: ibus Name: ibus
Version: 1.5.22 Version: 1.5.23
Release: 3 Release: 1
Summary: Intelligent Input Bus for Linux OS Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+ License: LGPLv2+
URL: https://github.com/ibus/%name/wiki URL: https://github.com/ibus/%name/wiki
@ -16,9 +16,7 @@ Source1: %{name}-xinput
Source2: %{name}.conf.5 Source2: %{name}.conf.5
Patch0: %{name}-HEAD.patch Patch0: %{name}-HEAD.patch
Patch1: %{name}-1385349-segv-bus-proxy.patch Patch1: %{name}-1385349-segv-bus-proxy.patch
Patch6000: 02338ce751a1ed5b9b892fba530ec2fe211d314e.patch Patch2: 30a3641e19c541924959a5770dd784b4424288d4.patch
Patch6001: aa558de80c224921753990806cf553428fbe7057.patch
Patch6002: b72efea42d5f72e08e2774ae03027c246d41cab7.patch
BuildRequires: gettext-devel libtool glib2-doc gtk2-devel gtk3-devel dbus-glib-devel gtk-doc dconf-devel dbus-x11 python3-devel BuildRequires: gettext-devel libtool glib2-doc gtk2-devel gtk3-devel dbus-glib-devel gtk-doc dconf-devel dbus-x11 python3-devel
BuildRequires: dbus-python-devel >= %{dbus_python_version} desktop-file-utils python3-gobject vala vala-devel vala-tools BuildRequires: dbus-python-devel >= %{dbus_python_version} desktop-file-utils python3-gobject vala vala-devel vala-tools
@ -42,8 +40,8 @@ Requires(postun): %{_sbindir}/alternatives
Provides: ibus-gtk = %{version}-%{release} Provides: ibus-gtk = %{version}-%{release}
Obsoletes: ibus-gtk < %{version}-%{release} Obsoletes: ibus-gtk < %{version}-%{release}
Provides: ibus-gtk2 ibus-gtk3 ibus-setup ibus-wayland Provides: ibus-gtk2 = %{version}-%{release} ibus-gtk3 = %{version}-%{release} ibus-setup = %{version}-%{release} ibus-wayland = %{version}-%{release}
Obsoletes: ibus-gtk2 ibus-gtk3 ibus-setup ibus-wayland Obsoletes: ibus-gtk2 < %{version}-%{release} ibus-gtk3 < %{version}-%{release} ibus-setup < %{version}-%{release} ibus-wayland < %{version}-%{release}
%global _xinputconf %{_sysconfdir}/X11/xinit/xinput.d/ibus.conf %global _xinputconf %{_sysconfdir}/X11/xinit/xinput.d/ibus.conf
@ -62,8 +60,8 @@ This package contains the libraries for IBus
Summary: Development tools for ibus Summary: Development tools for ibus
Requires: %{name} = %{version}-%{release} Requires: %{name} = %{version}-%{release}
Requires: dbus-devel glib2-devel gobject-introspection-devel vala Requires: dbus-devel glib2-devel gobject-introspection-devel vala
Provides: ibus-devel-docs Provides: ibus-devel-docs = %{version}-%{release}
Obsoletes: ibus-devel-docs Obsoletes: ibus-devel-docs < %{version}-%{release}
%package_help %package_help
@ -183,6 +181,9 @@ dconf update || :
%{_datadir}/gtk-doc/html/* %{_datadir}/gtk-doc/html/*
%changelog %changelog
* Fri Jan 29 2021 zhanzhimin <zhanzhimin@huawei.com> - 1.5.23-1
- update to 1.5.23
* 20201121063007667187 patch-tracking 1.5.22-3 * 20201121063007667187 patch-tracking 1.5.22-3
- append patch file of upstream repository from <02338ce751a1ed5b9b892fba530ec2fe211d314e> to <b72efea42d5f72e08e2774ae03027c246d41cab7> - append patch file of upstream repository from <02338ce751a1ed5b9b892fba530ec2fe211d314e> to <b72efea42d5f72e08e2774ae03027c246d41cab7>