update to 1.5.29

This commit is contained in:
zhouwenpei 2024-02-01 09:15:40 +00:00
parent 47c24f4e65
commit 782fd7779b
6 changed files with 1991 additions and 504 deletions

View File

@ -1,39 +0,0 @@
From ff13b86247701950d525a3949c31dc94885f63eb Mon Sep 17 00:00:00 2001
From: yangxianzhao <yangxianzhao@uniontech.com>
Date: Fri, 15 Sep 2023 10:45:17 +0800
Subject: [PATCH] Fix ibus setup startup failure
---
setup/i18n.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/setup/i18n.py b/setup/i18n.py
index 976d1ae..182022b 100644
--- a/setup/i18n.py
+++ b/setup/i18n.py
@@ -23,9 +23,11 @@
import locale
import gettext
import os
+import sys
DOMAINNAME = "ibus10"
+PY3K = sys.version_info >= (3, 0)
_ = lambda a: gettext.dgettext(DOMAINNAME, a)
N_ = lambda a: a
@@ -42,7 +44,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.41.0

Binary file not shown.

BIN
ibus-1.5.29-rc2.tar.gz Normal file

Binary file not shown.

View File

@ -1,6 +1,6 @@
From 41c325dfb32269c9aadfeedb4df44656aac4d883 Mon Sep 17 00:00:00 2001 From 68996e1430e3478bda1201d8e31a82679b2659a4 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com> From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 20 Nov 2020 09:53:54 +0900 Date: Sat, 30 Sep 2023 11:50:14 +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
@ -11,9 +11,12 @@ rhbz#1767976 SEGV in assert(connection != NULL) in
bus_dbus_impl_connection_filter_cb() bus_dbus_impl_connection_filter_cb()
call bus_connection_set_filter() in bus_dbus_impl_destroy(). 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 rhbz#1601577 rhbz#1797726 SEGV in ibus_engine_desc_get_layout() in
bus_engine_proxy_new_internal() 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() rhbz#1663528 SEGV in g_mutex_clear() in bus_dbus_impl_destroy()
If the mutex is not unlocked, g_mutex_clear() causes assert. 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(). rhbz#1767691 SEGV in client/x11/main.c:_sighandler().
Do not call atexit functions in _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. _changed_cb() should not be called after ibus_bus_destroy() is called.
rhbz#1771238 SEGV in assert(m_loop == null) in switcher.vala. 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() rhbz#1797120 SEGV in assert(bus.is_connected()) in panel_binding_construct()
Check m_ibus in extension.vala:bus_name_acquired_cb() 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#1350291
BUG=rhbz#1601577 BUG=rhbz#1601577
BUG=rhbz#1663528 BUG=rhbz#1663528
@ -39,14 +53,19 @@ BUG=rhbz#1795499
BUG=rhbz#1771238 BUG=rhbz#1771238
BUG=rhbz#1767976 BUG=rhbz#1767976
BUG=rhbz#1797120 BUG=rhbz#1797120
BUG=rhbz#2151344
BUG=rhbz#2195895
BUG=rhbz#2239633
--- ---
bus/dbusimpl.c | 47 ++++++++++++++++++++++++--- bus/dbusimpl.c | 47 ++++++++++++++++++++++++---
bus/engineproxy.c | 51 ++++++++++++++++++++++------- bus/engineproxy.c | 44 +++++++++++++++++++------
client/x11/main.c | 8 ++++- bus/panelproxy.c | 9 +++++-
src/ibusbus.c | 5 +++ client/x11/main.c | 56 ++++++++++++++++++++++++++++----
portal/portal.c | 25 ++++++++++++---
src/ibusbus.c | 6 ++++
ui/gtk3/extension.vala | 4 +++ ui/gtk3/extension.vala | 4 +++
ui/gtk3/switcher.vala | 73 +++++++++++++++++++++++++----------------- 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 diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c
index 59787a80..af2fbde2 100644 index 59787a80..af2fbde2 100644
@ -137,10 +156,10 @@ index 59787a80..af2fbde2 100644
if (incoming) { if (incoming) {
/* is incoming message */ /* is incoming message */
diff --git a/bus/engineproxy.c b/bus/engineproxy.c diff --git a/bus/engineproxy.c b/bus/engineproxy.c
index 2d98995c..bbbe5532 100644 index b3e16066..ba479b59 100644
--- a/bus/engineproxy.c --- a/bus/engineproxy.c
+++ b/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 (); g_return_if_reached ();
} }
@ -152,16 +171,14 @@ index 2d98995c..bbbe5532 100644
+ GDBusConnection *connection, + GDBusConnection *connection,
+ GError **error) + GError **error)
{ {
+ GDBusProxyFlags flags; GDBusProxyFlags flags;
+ BusEngineProxy *engine; BusEngineProxy *engine;
+ @@ -706,12 +708,20 @@ bus_engine_proxy_new_internal (const gchar *path,
g_assert (path); g_assert (path);
g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (IBUS_IS_ENGINE_DESC (desc));
g_assert (G_IS_DBUS_CONNECTION (connection)); g_assert (G_IS_DBUS_CONNECTION (connection));
+ g_assert (error && *error == NULL); + 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. */ + /* rhbz#1601577 engine == NULL if connection is closed. */
+ if (g_dbus_connection_is_closed (connection)) { + if (g_dbus_connection_is_closed (connection)) {
+ *error = g_error_new (G_DBUS_ERROR, + *error = g_error_new (G_DBUS_ERROR,
@ -169,16 +186,16 @@ index 2d98995c..bbbe5532 100644
+ "Connection is closed."); + "Connection is closed.");
+ return NULL; + return NULL;
+ } + }
+ flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START;
+ engine = engine = (BusEngineProxy *) g_initable_new (
(BusEngineProxy *) g_initable_new (BUS_TYPE_ENGINE_PROXY, BUS_TYPE_ENGINE_PROXY,
NULL, NULL,
- NULL, - NULL,
+ error, + error,
"desc", desc, "desc", desc,
"g-connection", connection, "g-connection", connection,
"g-interface-name", IBUS_INTERFACE_ENGINE, "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-default-timeout", g_gdbus_timeout,
"g-flags", flags, "g-flags", flags,
NULL); NULL);
@ -191,14 +208,15 @@ index 2d98995c..bbbe5532 100644
const gchar *layout = ibus_engine_desc_get_layout (desc); const gchar *layout = ibus_engine_desc_get_layout (desc);
if (layout != NULL && layout[0] != '\0') { if (layout != NULL && layout[0] != '\0') {
engine->keymap = ibus_keymap_get (layout); engine->keymap = ibus_keymap_get (layout);
} @@ -756,6 +772,7 @@ bus_engine_proxy_new_internal (const gchar *path,
return engine; return engine;
} }
+#pragma GCC reset_options +#pragma GCC reset_options
typedef struct { typedef struct {
GTask *task; GTask *task;
@@ -748,23 +768,30 @@ create_engine_ready_cb (BusFactoryProxy *factory, @@ -818,23 +835,30 @@ create_engine_ready_cb (BusFactoryProxy *factory,
GAsyncResult *res, GAsyncResult *res,
EngineProxyNewData *data) EngineProxyNewData *data)
{ {
@ -237,11 +255,45 @@ index 2d98995c..bbbe5532 100644
/* FIXME: set destroy callback ? */ /* FIXME: set destroy callback ? */
g_task_return_pointer (data->task, engine, NULL); 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 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 --- a/client/x11/main.c
+++ b/client/x11/main.c +++ b/client/x11/main.c
@@ -40,6 +40,7 @@ @@ -45,6 +45,7 @@
#include <iconv.h> #include <iconv.h>
#include <signal.h> #include <signal.h>
#include <stdlib.h> #include <stdlib.h>
@ -249,7 +301,142 @@ index c9ee174d..768b91f0 100644
#include <getopt.h> #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 static void
_sighandler (int sig) _sighandler (int sig)
{ {
@ -263,11 +450,70 @@ index c9ee174d..768b91f0 100644
} }
static void 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 diff --git a/src/ibusbus.c b/src/ibusbus.c
index b7ffbb47..668c8a26 100644 index 0e6d67f1..fcc742b6 100644
--- a/src/ibusbus.c --- a/src/ibusbus.c
+++ b/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; _bus = NULL;
if (bus->priv->monitor) { if (bus->priv->monitor) {
@ -276,6 +522,7 @@ index b7ffbb47..668c8a26 100644
+ */ + */
+ g_signal_handlers_disconnect_by_func (bus->priv->monitor, + g_signal_handlers_disconnect_by_func (bus->priv->monitor,
+ (GCallback) _changed_cb, bus); + (GCallback) _changed_cb, bus);
+ g_file_monitor_cancel (bus->priv->monitor);
g_object_unref (bus->priv->monitor); g_object_unref (bus->priv->monitor);
bus->priv->monitor = NULL; bus->priv->monitor = NULL;
} }
@ -295,10 +542,10 @@ index a6f2e8e6..b7a04081 100644
m_panel.load_settings(); m_panel.load_settings();
} }
diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala 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 --- a/ui/gtk3/switcher.vala
+++ b/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, IBus.EngineDesc[] engines,
int index, int index,
string input_context_path) { string input_context_path) {
@ -307,9 +554,9 @@ index a4529c88..29a70dd5 100644
+ assert(m_loop == null); + assert(m_loop == null);
+ assert(index < engines.length); + assert(index < engines.length);
m_is_running = true; if (m_is_running)
m_keyval = keyval; return index;
@@ -198,16 +198,18 @@ class Switcher : Gtk.Window { @@ -236,16 +236,18 @@ class Switcher : Gtk.Window {
null, null,
event, event,
null); null);
@ -337,7 +584,7 @@ index a4529c88..29a70dd5 100644
#else #else
Gdk.Device device = event.get_device(); Gdk.Device device = event.get_device();
if (device == null) { if (device == null) {
@@ -243,30 +245,41 @@ class Switcher : Gtk.Window { @@ -281,30 +283,41 @@ class Switcher : Gtk.Window {
Gdk.EventMask.KEY_RELEASE_MASK, Gdk.EventMask.KEY_RELEASE_MASK,
null, null,
Gdk.CURRENT_TIME); Gdk.CURRENT_TIME);
@ -399,5 +646,5 @@ index a4529c88..29a70dd5 100644
#if VALA_0_34 #if VALA_0_34
seat.ungrab(); seat.ungrab();
-- --
2.24.1 2.41.0

File diff suppressed because it is too large Load Diff

View File

@ -5,24 +5,24 @@
%global dbus_python_version 0.83.0 %global dbus_python_version 0.83.0
Name: ibus Name: ibus
Version: 1.5.23 Version: 1.5.29
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
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,2 come form fedora
Source1: %{name}-xinput 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
Patch2: 30a3641e19c541924959a5770dd784b4424288d4.patch Patch2: 30a3641e19c541924959a5770dd784b4424288d4.patch
Patch3: 0001-Fix-ibus-setup-startup-failure.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
BuildRequires: iso-codes-devel libnotify-devel libwayland-client-devel qt5-qtbase-devel cldr-emoji-annotation 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 BuildRequires: unicode-emoji unicode-ucd libXtst-devel libxslt gobject-introspection-devel pygobject3-devel
BuildRequires: libdbusmenu-gtk3-devel
Requires: iso-codes dbus-x11 dconf python3-gobject python3 Requires: iso-codes dbus-x11 dconf python3-gobject python3
Requires: xorg-x11-xinit xorg-x11-xkb-utils Requires: xorg-x11-xinit xorg-x11-xkb-utils
@ -69,8 +69,8 @@ The ibus-devel package contains the header files and developer
docs for ibus. docs for ibus.
%prep %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 diff client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c
if test $? -ne 0 ; then if test $? -ne 0 ; then
@ -150,12 +150,17 @@ dconf update || :
%{_libexecdir}/* %{_libexecdir}/*
%{_sysconfdir}/dconf/db/ibus.d %{_sysconfdir}/dconf/db/ibus.d
%{_sysconfdir}/dconf/profile/ibus %{_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/__pycache__/*.py*
%python3_sitearch/gi/overrides/IBus.py %python3_sitearch/gi/overrides/IBus.py
%dir %{_sysconfdir}/X11/xinit/xinput.d %dir %{_sysconfdir}/X11/xinit/xinput.d
%config %{_xinputconf} %config %{_xinputconf}
%{_libdir}/gtk-2.0/* %{_libdir}/gtk-2.0/*
%{_libdir}/gtk-3.0/* %{_libdir}/gtk-3.0/*
%{_libdir}/gtk-4.0/*
%files libs %files libs
%{_libdir}/libibus-*%{ibus_api_version}.so.* %{_libdir}/libibus-*%{ibus_api_version}.so.*
@ -178,6 +183,9 @@ dconf update || :
%{_datadir}/gtk-doc/html/* %{_datadir}/gtk-doc/html/*
%changelog %changelog
* 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 * Fri Sep 15 2023 yangxianzhao <yangxianzhao@uniontech.com> - 1.5.23-3
- fix ibus setup failure - fix ibus setup failure