]> Pileus Git - ~andy/gtk/blobdiff - modules/input/gtkimcontextxim.c
Unregister XIM callbacks here. (#309054)
[~andy/gtk] / modules / input / gtkimcontextxim.c
index 220a04a8f25e09f8afd9965b3af4283b47138c79..86c972d238d4fc40bb0eda2ebb96a49d1f1a1ef2 100644 (file)
@@ -565,6 +565,24 @@ gtk_im_context_xim_finalize (GObject *obj)
 
   context_xim->finalizing = TRUE;
 
+  if (context_xim->im_info) 
+    {
+      GdkDisplay *display;
+      XIMCallback im_destroy_callback;
+
+      display = gdk_screen_get_display (context_xim->im_info->screen);
+      XUnregisterIMInstantiateCallback (GDK_DISPLAY_XDISPLAY (display),
+                                       NULL, NULL, NULL,
+                                       xim_instantiate_callback,
+                                       (XPointer)context_xim->im_info);
+
+      im_destroy_callback.client_data = NULL;
+      im_destroy_callback.callback = NULL;
+      XSetIMValues (context_xim->im_info->im,
+                   XNDestroyCallback, &im_destroy_callback,
+                   NULL);
+    }
+
   set_ic_client_window (context_xim, NULL);
 
   g_free (context_xim->locale);