Compare commits
10 Commits
5e124a9981
...
4269d9c0b4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4269d9c0b4 | ||
|
|
efce23fbc8 | ||
|
|
81bd182c1e | ||
|
|
782fd7779b | ||
|
|
47c24f4e65 | ||
|
|
79f803467e | ||
|
|
acae79f55e | ||
|
|
5d0d25dd83 | ||
|
|
f65f796093 | ||
|
|
167d1b74e4 |
@ -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
|
||||
76
30a3641e19c541924959a5770dd784b4424288d4.patch
Normal file
76
30a3641e19c541924959a5770dd784b4424288d4.patch
Normal 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"
|
||||
@ -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;
|
||||
}
|
||||
@ -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.29-rc2.tar.gz
Normal file
BIN
ibus-1.5.29-rc2.tar.gz
Normal file
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
From 023d50db40912e4f7ee333543e05995a9c730bae Mon Sep 17 00:00:00 2001
|
||||
From 68996e1430e3478bda1201d8e31a82679b2659a4 Mon Sep 17 00:00:00 2001
|
||||
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||
Date: Fri, 15 May 2020 21:44:16 +0900
|
||||
Date: Sat, 30 Sep 2023 11:50:14 +0900
|
||||
Subject: [PATCH] Fix SEGV in bus_panel_proxy_focus_in()
|
||||
|
||||
rhbz#1350291 SEGV in BUS_IS_CONNECTION(skip_connection) in
|
||||
@ -11,9 +11,12 @@ rhbz#1767976 SEGV in assert(connection != NULL) in
|
||||
bus_dbus_impl_connection_filter_cb()
|
||||
call bus_connection_set_filter() in bus_dbus_impl_destroy().
|
||||
|
||||
rhbz#2213445 SEGV in bus_panel_proxy_new()
|
||||
WIP: Add a GError.
|
||||
|
||||
rhbz#1601577 rhbz#1797726 SEGV in ibus_engine_desc_get_layout() in
|
||||
bus_engine_proxy_new_internal()
|
||||
WIP: Added a GError to get the error message to check why the SEGV happened.
|
||||
WIP: Add a GError to get the error message to check why the SEGV happened.
|
||||
|
||||
rhbz#1663528 SEGV in g_mutex_clear() in bus_dbus_impl_destroy()
|
||||
If the mutex is not unlocked, g_mutex_clear() causes assert.
|
||||
@ -21,7 +24,11 @@ If the mutex is not unlocked, g_mutex_clear() causes assert.
|
||||
rhbz#1767691 SEGV in client/x11/main.c:_sighandler().
|
||||
Do not call atexit functions in _sighandler().
|
||||
|
||||
rhbz#1795499 SEGV in ibus_bus_get_bus_address() because of no _bus->priv.
|
||||
rhbz#2195895 SEGV in client/x11/main.c:_xim_set_cursor_location()
|
||||
check if IBusInputContext was disconnected.
|
||||
|
||||
rhbz#1795499 rhbz#1936777 SEGV in ibus_bus_get_bus_address() because of
|
||||
no _bus->priv.
|
||||
_changed_cb() should not be called after ibus_bus_destroy() is called.
|
||||
|
||||
rhbz#1771238 SEGV in assert(m_loop == null) in switcher.vala.
|
||||
@ -31,6 +38,13 @@ events and m_loop was not released.
|
||||
rhbz#1797120 SEGV in assert(bus.is_connected()) in panel_binding_construct()
|
||||
Check m_ibus in extension.vala:bus_name_acquired_cb()
|
||||
|
||||
rhbz#2151344 SEGV with portal_context->owner in name_owner_changed()
|
||||
Maybe g_object_unref() is called but not finalized yet.
|
||||
|
||||
rhbz#2239633 SEGV with g_object_unref() in
|
||||
ibus_portal_context_handle_destroy()
|
||||
Connect "handle-destroy" signal after g_list_prepend().
|
||||
|
||||
BUG=rhbz#1350291
|
||||
BUG=rhbz#1601577
|
||||
BUG=rhbz#1663528
|
||||
@ -39,14 +53,19 @@ BUG=rhbz#1795499
|
||||
BUG=rhbz#1771238
|
||||
BUG=rhbz#1767976
|
||||
BUG=rhbz#1797120
|
||||
BUG=rhbz#2151344
|
||||
BUG=rhbz#2195895
|
||||
BUG=rhbz#2239633
|
||||
---
|
||||
bus/dbusimpl.c | 47 ++++++++++++++++++++++++---
|
||||
bus/engineproxy.c | 51 ++++++++++++++++++++++-------
|
||||
client/x11/main.c | 8 ++++-
|
||||
src/ibusbus.c | 5 +++
|
||||
bus/engineproxy.c | 44 +++++++++++++++++++------
|
||||
bus/panelproxy.c | 9 +++++-
|
||||
client/x11/main.c | 56 ++++++++++++++++++++++++++++----
|
||||
portal/portal.c | 25 ++++++++++++---
|
||||
src/ibusbus.c | 6 ++++
|
||||
ui/gtk3/extension.vala | 4 +++
|
||||
ui/gtk3/switcher.vala | 73 +++++++++++++++++++++++++-----------------
|
||||
6 files changed, 141 insertions(+), 47 deletions(-)
|
||||
8 files changed, 208 insertions(+), 56 deletions(-)
|
||||
|
||||
diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c
|
||||
index 59787a80..af2fbde2 100644
|
||||
@ -137,10 +156,10 @@ index 59787a80..af2fbde2 100644
|
||||
if (incoming) {
|
||||
/* is incoming message */
|
||||
diff --git a/bus/engineproxy.c b/bus/engineproxy.c
|
||||
index 2d98995c..bbbe5532 100644
|
||||
index b3e16066..ba479b59 100644
|
||||
--- a/bus/engineproxy.c
|
||||
+++ b/bus/engineproxy.c
|
||||
@@ -660,20 +660,33 @@ bus_engine_proxy_g_signal (GDBusProxy *proxy,
|
||||
@@ -693,10 +693,12 @@ bus_engine_proxy_g_signal (GDBusProxy *proxy,
|
||||
g_return_if_reached ();
|
||||
}
|
||||
|
||||
@ -152,16 +171,14 @@ index 2d98995c..bbbe5532 100644
|
||||
+ GDBusConnection *connection,
|
||||
+ GError **error)
|
||||
{
|
||||
+ GDBusProxyFlags flags;
|
||||
+ BusEngineProxy *engine;
|
||||
+
|
||||
GDBusProxyFlags flags;
|
||||
BusEngineProxy *engine;
|
||||
@@ -706,12 +708,20 @@ bus_engine_proxy_new_internal (const gchar *path,
|
||||
g_assert (path);
|
||||
g_assert (IBUS_IS_ENGINE_DESC (desc));
|
||||
g_assert (G_IS_DBUS_CONNECTION (connection));
|
||||
+ g_assert (error && *error == NULL);
|
||||
|
||||
- GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START;
|
||||
- BusEngineProxy *engine =
|
||||
+ /* rhbz#1601577 engine == NULL if connection is closed. */
|
||||
+ if (g_dbus_connection_is_closed (connection)) {
|
||||
+ *error = g_error_new (G_DBUS_ERROR,
|
||||
@ -169,16 +186,16 @@ index 2d98995c..bbbe5532 100644
|
||||
+ "Connection is closed.");
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START;
|
||||
+ engine =
|
||||
(BusEngineProxy *) g_initable_new (BUS_TYPE_ENGINE_PROXY,
|
||||
flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START;
|
||||
engine = (BusEngineProxy *) g_initable_new (
|
||||
BUS_TYPE_ENGINE_PROXY,
|
||||
NULL,
|
||||
- NULL,
|
||||
+ error,
|
||||
"desc", desc,
|
||||
"g-connection", connection,
|
||||
"g-interface-name", IBUS_INTERFACE_ENGINE,
|
||||
@@ -681,12 +694,19 @@ bus_engine_proxy_new_internal (const gchar *path,
|
||||
@@ -719,6 +729,12 @@ bus_engine_proxy_new_internal (const gchar *path,
|
||||
"g-default-timeout", g_gdbus_timeout,
|
||||
"g-flags", flags,
|
||||
NULL);
|
||||
@ -191,14 +208,15 @@ index 2d98995c..bbbe5532 100644
|
||||
const gchar *layout = ibus_engine_desc_get_layout (desc);
|
||||
if (layout != NULL && layout[0] != '\0') {
|
||||
engine->keymap = ibus_keymap_get (layout);
|
||||
}
|
||||
@@ -756,6 +772,7 @@ bus_engine_proxy_new_internal (const gchar *path,
|
||||
|
||||
return engine;
|
||||
}
|
||||
+#pragma GCC reset_options
|
||||
|
||||
typedef struct {
|
||||
GTask *task;
|
||||
@@ -748,23 +768,30 @@ create_engine_ready_cb (BusFactoryProxy *factory,
|
||||
@@ -818,23 +835,30 @@ create_engine_ready_cb (BusFactoryProxy *factory,
|
||||
GAsyncResult *res,
|
||||
EngineProxyNewData *data)
|
||||
{
|
||||
@ -237,11 +255,45 @@ index 2d98995c..bbbe5532 100644
|
||||
|
||||
/* FIXME: set destroy callback ? */
|
||||
g_task_return_pointer (data->task, engine, NULL);
|
||||
diff --git a/bus/panelproxy.c b/bus/panelproxy.c
|
||||
index e6001ebf..00828fbc 100644
|
||||
--- a/bus/panelproxy.c
|
||||
+++ b/bus/panelproxy.c
|
||||
@@ -122,6 +122,8 @@ bus_panel_proxy_new (BusConnection *connection,
|
||||
const gchar *path = NULL;
|
||||
GObject *obj;
|
||||
BusPanelProxy *panel;
|
||||
+ GError *error = NULL;
|
||||
+ const gchar *message;
|
||||
|
||||
g_assert (BUS_IS_CONNECTION (connection));
|
||||
|
||||
@@ -138,7 +140,7 @@ bus_panel_proxy_new (BusConnection *connection,
|
||||
|
||||
obj = g_initable_new (BUS_TYPE_PANEL_PROXY,
|
||||
NULL,
|
||||
- NULL,
|
||||
+ &error,
|
||||
"g-object-path", path,
|
||||
"g-interface-name", IBUS_INTERFACE_PANEL,
|
||||
"g-connection", bus_connection_get_dbus_connection (connection),
|
||||
@@ -146,6 +148,11 @@ bus_panel_proxy_new (BusConnection *connection,
|
||||
"g-flags", G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
|
||||
NULL);
|
||||
|
||||
+ if (error) {
|
||||
+ /* TODO: rhbz#2213445 Why does this issue happen? */
|
||||
+ message = error->message;
|
||||
+ g_critical ("Failed to generate BusPanelProxy: %s", message);
|
||||
+ }
|
||||
panel = BUS_PANEL_PROXY (obj);
|
||||
panel->panel_type = panel_type;
|
||||
return panel;
|
||||
diff --git a/client/x11/main.c b/client/x11/main.c
|
||||
index c9ee174d..768b91f0 100644
|
||||
index b7eb5961..3075d5d0 100644
|
||||
--- a/client/x11/main.c
|
||||
+++ b/client/x11/main.c
|
||||
@@ -40,6 +40,7 @@
|
||||
@@ -45,6 +45,7 @@
|
||||
#include <iconv.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
@ -249,7 +301,142 @@ index c9ee174d..768b91f0 100644
|
||||
|
||||
#include <getopt.h>
|
||||
|
||||
@@ -1104,7 +1105,12 @@ _atexit_cb ()
|
||||
@@ -69,6 +70,7 @@ typedef struct _X11ICONN X11ICONN;
|
||||
typedef struct _X11IC X11IC;
|
||||
struct _X11IC {
|
||||
IBusInputContext *context;
|
||||
+ gboolean ibus_connected;
|
||||
Window client_window;
|
||||
Window focus_window;
|
||||
gint32 input_style;
|
||||
@@ -327,6 +329,18 @@ _xim_store_ic_values (X11IC *x11ic, IMChangeICStruct *call_data)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static void
|
||||
+ibus_ic_connection_closed_cb (GDBusConnection *connection,
|
||||
+ gboolean remote_peer_vanished,
|
||||
+ GError *error,
|
||||
+ X11IC *x11ic)
|
||||
+{
|
||||
+ /* rhbz#2195895 The moment of the IBusBus disconnection would be
|
||||
+ * different from the moment of XIM_DISCONNECT.
|
||||
+ */
|
||||
+ x11ic->ibus_connected = FALSE;
|
||||
+}
|
||||
+
|
||||
|
||||
static int
|
||||
xim_create_ic (XIMS xims, IMChangeICStruct *call_data)
|
||||
@@ -334,6 +348,7 @@ xim_create_ic (XIMS xims, IMChangeICStruct *call_data)
|
||||
static int base_icid = 1;
|
||||
X11IC *x11ic;
|
||||
guint32 capabilities = IBUS_CAP_FOCUS;
|
||||
+ GDBusConnection *connection;
|
||||
|
||||
call_data->icid = base_icid ++;
|
||||
|
||||
@@ -345,8 +360,9 @@ xim_create_ic (XIMS xims, IMChangeICStruct *call_data)
|
||||
|
||||
x11ic->icid = call_data->icid;
|
||||
x11ic->connect_id = call_data->connect_id;
|
||||
- x11ic->conn = (X11ICONN *)g_hash_table_lookup (_connections,
|
||||
- GINT_TO_POINTER ((gint) call_data->connect_id));
|
||||
+ x11ic->conn = (X11ICONN *)g_hash_table_lookup (
|
||||
+ _connections,
|
||||
+ GINT_TO_POINTER ((gint) call_data->connect_id));
|
||||
if (x11ic->conn == NULL) {
|
||||
g_slice_free (X11IC, x11ic);
|
||||
g_return_val_if_reached (0);
|
||||
@@ -376,6 +392,10 @@ xim_create_ic (XIMS xims, IMChangeICStruct *call_data)
|
||||
G_CALLBACK (_context_enabled_cb), x11ic);
|
||||
g_signal_connect (x11ic->context, "disabled",
|
||||
G_CALLBACK (_context_disabled_cb), x11ic);
|
||||
+ connection = g_dbus_proxy_get_connection (G_DBUS_PROXY (x11ic->context));
|
||||
+ x11ic->ibus_connected = !g_dbus_connection_is_closed (connection);
|
||||
+ g_signal_connect (connection, "closed",
|
||||
+ G_CALLBACK (ibus_ic_connection_closed_cb), x11ic);
|
||||
|
||||
|
||||
if (x11ic->input_style & XIMPreeditCallbacks)
|
||||
@@ -400,11 +420,19 @@ xim_destroy_ic (XIMS xims, IMChangeICStruct *call_data)
|
||||
LOG (1, "XIM_DESTROY_IC ic=%d connect_id=%d",
|
||||
call_data->icid, call_data->connect_id);
|
||||
|
||||
- x11ic = (X11IC *)g_hash_table_lookup (_x11_ic_table,
|
||||
- GINT_TO_POINTER ((gint) call_data->icid));
|
||||
+ x11ic = (X11IC *)g_hash_table_lookup (
|
||||
+ _x11_ic_table,
|
||||
+ GINT_TO_POINTER ((gint) call_data->icid));
|
||||
g_return_val_if_fail (x11ic != NULL, 0);
|
||||
|
||||
if (x11ic->context) {
|
||||
+ GDBusConnection *connection =
|
||||
+ g_dbus_proxy_get_connection (G_DBUS_PROXY (x11ic->context));
|
||||
+ x11ic->ibus_connected = FALSE;
|
||||
+ g_signal_handlers_disconnect_by_func (
|
||||
+ connection,
|
||||
+ (GCallback)ibus_ic_connection_closed_cb,
|
||||
+ x11ic);
|
||||
ibus_proxy_destroy ((IBusProxy *)x11ic->context);
|
||||
g_object_unref (x11ic->context);
|
||||
x11ic->context = NULL;
|
||||
@@ -412,7 +440,8 @@ xim_destroy_ic (XIMS xims, IMChangeICStruct *call_data)
|
||||
|
||||
g_hash_table_remove (_x11_ic_table,
|
||||
GINT_TO_POINTER ((gint) call_data->icid));
|
||||
- x11ic->conn->clients = g_list_remove (x11ic->conn->clients, (gconstpointer)x11ic);
|
||||
+ x11ic->conn->clients = g_list_remove (x11ic->conn->clients,
|
||||
+ (gconstpointer)x11ic);
|
||||
|
||||
g_free (x11ic->preedit_string);
|
||||
x11ic->preedit_string = NULL;
|
||||
@@ -439,6 +468,8 @@ xim_set_ic_focus (XIMS xims, IMChangeFocusStruct *call_data)
|
||||
x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table,
|
||||
GINT_TO_POINTER ((gint) call_data->icid));
|
||||
g_return_val_if_fail (x11ic != NULL, 0);
|
||||
+ if (!x11ic->ibus_connected)
|
||||
+ return 1;
|
||||
|
||||
ibus_input_context_focus_in (x11ic->context);
|
||||
_xim_set_cursor_location (x11ic);
|
||||
@@ -458,6 +489,8 @@ xim_unset_ic_focus (XIMS xims, IMChangeFocusStruct *call_data)
|
||||
x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table,
|
||||
GINT_TO_POINTER ((gint) call_data->icid));
|
||||
g_return_val_if_fail (x11ic != NULL, 0);
|
||||
+ if (!x11ic->ibus_connected)
|
||||
+ return 1;
|
||||
|
||||
ibus_input_context_focus_out (x11ic->context);
|
||||
|
||||
@@ -712,6 +745,8 @@ xim_forward_event (XIMS xims, IMForwardEventStruct *call_data)
|
||||
_x11_ic_table,
|
||||
GINT_TO_POINTER ((gint) call_data->icid));
|
||||
g_return_val_if_fail (x11ic != NULL, 0);
|
||||
+ if (!x11ic->ibus_connected)
|
||||
+ return 0;
|
||||
|
||||
xevent = (XKeyEvent*) &(call_data->event);
|
||||
|
||||
@@ -870,6 +905,8 @@ _xim_set_cursor_location (X11IC *x11ic)
|
||||
}
|
||||
}
|
||||
|
||||
+ if (!x11ic->ibus_connected)
|
||||
+ return;
|
||||
ibus_input_context_set_cursor_location (x11ic->context,
|
||||
preedit_area.x,
|
||||
preedit_area.y,
|
||||
@@ -950,6 +987,8 @@ xim_reset_ic (XIMS xims, IMResetICStruct *call_data)
|
||||
x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table,
|
||||
GINT_TO_POINTER ((gint) call_data->icid));
|
||||
g_return_val_if_fail (x11ic != NULL, 0);
|
||||
+ if (!x11ic->ibus_connected)
|
||||
+ return 1;
|
||||
|
||||
ibus_input_context_reset (x11ic->context);
|
||||
|
||||
@@ -1309,7 +1348,12 @@ _atexit_cb ()
|
||||
static void
|
||||
_sighandler (int sig)
|
||||
{
|
||||
@ -263,11 +450,70 @@ index c9ee174d..768b91f0 100644
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/portal/portal.c b/portal/portal.c
|
||||
index c2e4fc7f..76ef4f0a 100644
|
||||
--- a/portal/portal.c
|
||||
+++ b/portal/portal.c
|
||||
@@ -90,6 +90,11 @@ static void portal_context_g_signal (GDBusProxy *proxy,
|
||||
GVariant *parameters,
|
||||
IBusPortalContext *portal_context);
|
||||
|
||||
+#define IBUS_TYPE_PORTAL_CONTEXT \
|
||||
+ (ibus_portal_context_get_type ())
|
||||
+#define IBUS_IS_PORTAL_CONTEXT(obj) \
|
||||
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PORTAL_CONTEXT))
|
||||
+
|
||||
G_DEFINE_TYPE_WITH_CODE (IBusPortalContext,
|
||||
ibus_portal_context,
|
||||
IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON,
|
||||
@@ -449,11 +454,6 @@ ibus_portal_context_new (IBusInputContext *context,
|
||||
g_strdup_printf (IBUS_PATH_INPUT_CONTEXT, portal_context->id);
|
||||
portal_context->service = ibus_dbus_service_skeleton_new ();
|
||||
|
||||
- g_signal_connect (portal_context->service,
|
||||
- "handle-destroy",
|
||||
- G_CALLBACK (ibus_portal_context_handle_destroy),
|
||||
- portal_context);
|
||||
-
|
||||
if (!g_dbus_interface_skeleton_export (
|
||||
G_DBUS_INTERFACE_SKELETON (portal_context->service),
|
||||
connection, portal_context->object_path,
|
||||
@@ -466,8 +466,17 @@ ibus_portal_context_new (IBusInputContext *context,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ /* rhbz#2239633 g_list_prepend() needs to be callsed before
|
||||
+ * ibus_portal_context_handle_destroy() is connected
|
||||
+ * for g_list_remove() in ibus_portal_context_finalize().
|
||||
+ */
|
||||
all_contexts = g_list_prepend (all_contexts, portal_context);
|
||||
|
||||
+ g_signal_connect (portal_context->service,
|
||||
+ "handle-destroy",
|
||||
+ G_CALLBACK (ibus_portal_context_handle_destroy),
|
||||
+ portal_context);
|
||||
+
|
||||
return portal_context;
|
||||
}
|
||||
|
||||
@@ -624,6 +633,12 @@ name_owner_changed (GDBusConnection *connection,
|
||||
IBusPortalContext *portal_context = l->data;
|
||||
next = l->next;
|
||||
|
||||
+ /* rhbz#2151344 portal_context might not be finalized? */
|
||||
+ if (!G_LIKELY (IBUS_IS_PORTAL_CONTEXT (portal_context))) {
|
||||
+ g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC,
|
||||
+ "portal_context is not IBusPortalContext");
|
||||
+ continue;
|
||||
+ }
|
||||
if (g_strcmp0 (portal_context->owner, name) == 0) {
|
||||
g_object_unref (portal_context);
|
||||
}
|
||||
diff --git a/src/ibusbus.c b/src/ibusbus.c
|
||||
index b7ffbb47..668c8a26 100644
|
||||
index 0e6d67f1..fcc742b6 100644
|
||||
--- a/src/ibusbus.c
|
||||
+++ b/src/ibusbus.c
|
||||
@@ -689,6 +689,11 @@ ibus_bus_destroy (IBusObject *object)
|
||||
@@ -742,6 +742,12 @@ ibus_bus_destroy (IBusObject *object)
|
||||
_bus = NULL;
|
||||
|
||||
if (bus->priv->monitor) {
|
||||
@ -276,11 +522,12 @@ index b7ffbb47..668c8a26 100644
|
||||
+ */
|
||||
+ g_signal_handlers_disconnect_by_func (bus->priv->monitor,
|
||||
+ (GCallback) _changed_cb, bus);
|
||||
+ g_file_monitor_cancel (bus->priv->monitor);
|
||||
g_object_unref (bus->priv->monitor);
|
||||
bus->priv->monitor = NULL;
|
||||
}
|
||||
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
|
||||
+++ b/ui/gtk3/extension.vala
|
||||
@@ -73,6 +73,10 @@ class ExtensionGtk : Gtk.Application {
|
||||
@ -295,10 +542,10 @@ index ea3cd464..57ed1357 100644
|
||||
m_panel.load_settings();
|
||||
}
|
||||
diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala
|
||||
index a4529c88..29a70dd5 100644
|
||||
index e3fab8d9..a827094f 100644
|
||||
--- a/ui/gtk3/switcher.vala
|
||||
+++ b/ui/gtk3/switcher.vala
|
||||
@@ -140,8 +140,8 @@ class Switcher : Gtk.Window {
|
||||
@@ -176,8 +176,8 @@ class Switcher : Gtk.Window {
|
||||
IBus.EngineDesc[] engines,
|
||||
int index,
|
||||
string input_context_path) {
|
||||
@ -307,9 +554,9 @@ index a4529c88..29a70dd5 100644
|
||||
+ assert(m_loop == null);
|
||||
+ assert(index < engines.length);
|
||||
|
||||
m_is_running = true;
|
||||
m_keyval = keyval;
|
||||
@@ -198,16 +198,18 @@ class Switcher : Gtk.Window {
|
||||
if (m_is_running)
|
||||
return index;
|
||||
@@ -236,16 +236,18 @@ class Switcher : Gtk.Window {
|
||||
null,
|
||||
event,
|
||||
null);
|
||||
@ -337,7 +584,7 @@ index a4529c88..29a70dd5 100644
|
||||
#else
|
||||
Gdk.Device device = event.get_device();
|
||||
if (device == null) {
|
||||
@@ -243,30 +245,41 @@ class Switcher : Gtk.Window {
|
||||
@@ -281,30 +283,41 @@ class Switcher : Gtk.Window {
|
||||
Gdk.EventMask.KEY_RELEASE_MASK,
|
||||
null,
|
||||
Gdk.CURRENT_TIME);
|
||||
@ -399,5 +646,5 @@ index a4529c88..29a70dd5 100644
|
||||
#if VALA_0_34
|
||||
seat.ungrab();
|
||||
--
|
||||
2.24.1
|
||||
2.41.0
|
||||
|
||||
2225
ibus-HEAD.patch
2225
ibus-HEAD.patch
File diff suppressed because it is too large
Load Diff
49
ibus.spec
49
ibus.spec
@ -5,27 +5,24 @@
|
||||
%global dbus_python_version 0.83.0
|
||||
|
||||
Name: ibus
|
||||
Version: 1.5.22
|
||||
Release: 3
|
||||
Version: 1.5.29
|
||||
Release: 2
|
||||
Summary: Intelligent Input Bus for Linux OS
|
||||
License: LGPLv2+
|
||||
URL: https://github.com/ibus/%name/wiki
|
||||
Source0: https://github.com/ibus/ibus/releases/download/%{version}/%{name}-%{version}.tar.gz
|
||||
Source0: https://github.com/ibus/ibus/releases/download/%{version}/%{name}-%{version}-rc2.tar.gz
|
||||
#Source1,2 come form fedora
|
||||
Source1: %{name}-xinput
|
||||
Source2: %{name}.conf.5
|
||||
Patch0: %{name}-HEAD.patch
|
||||
Patch1: %{name}-1385349-segv-bus-proxy.patch
|
||||
Patch6000: 02338ce751a1ed5b9b892fba530ec2fe211d314e.patch
|
||||
Patch6001: aa558de80c224921753990806cf553428fbe7057.patch
|
||||
Patch6002: b72efea42d5f72e08e2774ae03027c246d41cab7.patch
|
||||
Patch2: 30a3641e19c541924959a5770dd784b4424288d4.patch
|
||||
|
||||
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: iso-codes-devel libnotify-devel libwayland-client-devel qt5-qtbase-devel cldr-emoji-annotation
|
||||
BuildRequires: unicode-emoji unicode-ucd libXtst-devel libxslt gobject-introspection-devel pygobject3-devel
|
||||
#tmp buildrequire for update
|
||||
BuildRequires: ibus-libs
|
||||
BuildRequires: libdbusmenu-gtk3-devel gtk4-devel
|
||||
|
||||
Requires: iso-codes dbus-x11 dconf python3-gobject python3
|
||||
Requires: xorg-x11-xinit xorg-x11-xkb-utils
|
||||
@ -42,8 +39,8 @@ Requires(postun): %{_sbindir}/alternatives
|
||||
|
||||
Provides: ibus-gtk = %{version}-%{release}
|
||||
Obsoletes: ibus-gtk < %{version}-%{release}
|
||||
Provides: ibus-gtk2 ibus-gtk3 ibus-setup ibus-wayland
|
||||
Obsoletes: 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 < %{version}-%{release} ibus-gtk3 < %{version}-%{release} ibus-setup < %{version}-%{release} ibus-wayland < %{version}-%{release}
|
||||
|
||||
%global _xinputconf %{_sysconfdir}/X11/xinit/xinput.d/ibus.conf
|
||||
|
||||
@ -62,8 +59,8 @@ This package contains the libraries for IBus
|
||||
Summary: Development tools for ibus
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: dbus-devel glib2-devel gobject-introspection-devel vala
|
||||
Provides: ibus-devel-docs
|
||||
Obsoletes: ibus-devel-docs
|
||||
Provides: ibus-devel-docs = %{version}-%{release}
|
||||
Obsoletes: ibus-devel-docs < %{version}-%{release}
|
||||
|
||||
%package_help
|
||||
|
||||
@ -72,8 +69,8 @@ The ibus-devel package contains the header files and developer
|
||||
docs for ibus.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
%autosetup -n %{name}-%{version}-rc2 -p1
|
||||
cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || :
|
||||
|
||||
diff client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c
|
||||
if test $? -ne 0 ; then
|
||||
@ -111,11 +108,9 @@ desktop-file-install --delete-original \
|
||||
|
||||
%find_lang %{name}10
|
||||
|
||||
#tmp add for update
|
||||
cp -a %{_libdir}/libibus-*%{ibus_api_version}.so.* %{buildroot}/%{_libdir}
|
||||
|
||||
%check
|
||||
make check DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress" VERBOSE=1 %{nil}
|
||||
make check DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress xkb-latin-layouts" VERBOSE=1 %{nil}
|
||||
|
||||
%post
|
||||
%{_sbindir}/alternatives --install %{_sysconfdir}/X11/xinit/xinputrc xinputrc %{_xinputconf} 83 || :
|
||||
@ -155,12 +150,17 @@ dconf update || :
|
||||
%{_libexecdir}/*
|
||||
%{_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
|
||||
%dir %{_sysconfdir}/X11/xinit/xinput.d
|
||||
%config %{_xinputconf}
|
||||
%{_libdir}/gtk-2.0/*
|
||||
%{_libdir}/gtk-3.0/*
|
||||
%{_libdir}/gtk-4.0/*
|
||||
|
||||
%files libs
|
||||
%{_libdir}/libibus-*%{ibus_api_version}.so.*
|
||||
@ -183,6 +183,21 @@ dconf update || :
|
||||
%{_datadir}/gtk-doc/html/*
|
||||
|
||||
%changelog
|
||||
* Wed Mar 13 2024 herengui <herengui@kylinsec.com.cn> - 1.5.29-2
|
||||
- add buildrequires gtk4-devel since enable_gtk4 is set to yes by default.
|
||||
|
||||
* Thu Feb 01 2024 zhouwenpei <zhouwenpei1@h-partners.com> - 1.5.29-1
|
||||
- update to 1.5.29
|
||||
|
||||
* Fri Sep 15 2023 yangxianzhao <yangxianzhao@uniontech.com> - 1.5.23-3
|
||||
- fix ibus setup failure
|
||||
|
||||
* Mon Apr 18 2022 Jun Yang <jun.yang@suse.com> - 1.5.23-2
|
||||
- remove self-dependency
|
||||
|
||||
* Fri Jan 29 2021 zhanzhimin <zhanzhimin@huawei.com> - 1.5.23-1
|
||||
- update to 1.5.23
|
||||
|
||||
* 20201121063007667187 patch-tracking 1.5.22-3
|
||||
- append patch file of upstream repository from <02338ce751a1ed5b9b892fba530ec2fe211d314e> to <b72efea42d5f72e08e2774ae03027c246d41cab7>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user