File fix-gtk-suppress.patch of Package uim_backports
--- ./gtk2/immodule/gtk-im-uim.orig.c 2018-05-12 06:33:26.000000000 +0900
+++ ./gtk2/immodule/gtk-im-uim.c 2020-07-26 06:52:03.396763730 +0900
@@ -1596,14 +1596,13 @@
}
static void
-im_uim_finalize(GObject *obj)
+im_uim_dispose(GObject *obj)
{
IMUIMContext *uic = IM_UIM_CONTEXT(obj);
- im_uim_set_client_window(GTK_IM_CONTEXT(uic), NULL);
-
- uic->next->prev = uic->prev;
- uic->prev->next = uic->next;
+ if (uic->win) {
+ im_uim_set_client_window(GTK_IM_CONTEXT(uic), NULL);
+ }
if (uic->cwin) {
#if IM_UIM_USE_DELAY
@@ -1633,10 +1632,25 @@
uic->preedit_window = NULL;
}
+ if (uic->slave) {
+ g_signal_handlers_disconnect_by_func(uic->slave, (gpointer)(uintptr_t)commit_cb, uic);
+ g_object_unref(uic->slave);
+ uic->slave = NULL;
+ }
+
+ parent_class->dispose(obj);
+}
+
+static void
+im_uim_finalize(GObject *obj)
+{
+ IMUIMContext *uic = IM_UIM_CONTEXT(obj);
+
+ uic->next->prev = uic->prev;
+ uic->prev->next = uic->next;
+
uim_release_context(uic->uc);
- g_signal_handlers_disconnect_by_func(uic->slave, (gpointer)(uintptr_t)commit_cb, uic);
- g_object_unref(uic->slave);
parent_class->finalize(obj);
if (uic == focused_context) {
@@ -1663,6 +1677,7 @@
class->reset = im_uim_reset;
class->set_use_preedit = im_uim_set_use_preedit;
+ object_class->dispose = im_uim_dispose;
object_class->finalize = im_uim_finalize;
}