GType gtk_type_im_context_xim = 0;
-GSList *open_ims = NULL;
+static GSList *open_ims = NULL;
/* List of status windows for different toplevels */
static GSList *status_windows = NULL;
context_xim->finalizing = TRUE;
+ if (context_xim->im_info && !context_xim->im_info->ics->next)
+ {
+ if (context_xim->im_info->reconnecting)
+ {
+ GdkDisplay *display;
+
+ 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);
+ }
+ else
+ {
+ XIMCallback im_destroy_callback;
+
+ 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);
preedit_attr = XVaCreateNestedList (0,
XNSpotLocation, &spot,
- 0);
+ NULL);
XSetICValues (ic,
XNPreeditAttributes, preedit_attr,
NULL);
preedit_attr = XVaCreateNestedList(0,
XNPreeditState, &preedit_state,
- 0);
+ NULL);
if (!XGetICValues(ic,
XNPreeditAttributes, preedit_attr,
NULL))
preedit_attr = XVaCreateNestedList(0,
XNPreeditState, preedit_state,
- 0);
+ NULL);
if (have_preedit_state)
XSetICValues(ic,
XNPreeditAttributes, preedit_attr,