static BOOL XIMPreEditStateNotifyCallback(XIC xic, XPointer p, XPointer data) { const struct x11drv_win_data * const win_data = (struct x11drv_win_data *)p; const XIMPreeditState state = ((XIMPreeditStateNotifyCallbackStruct *)data)->state; TRACE("xic = %p, win = %lx, state = %lu\n", xic, win_data->whole_window, state); switch (state) { case XIMPreeditEnable: IME_SetOpenStatus(TRUE); break; case XIMPreeditDisable: IME_SetOpenStatus(FALSE); break; default: break; } return TRUE; }
static void X11DRV_ImmSetOpenStatus(BOOL fOpen) { if (fOpen == FALSE) { if (dwCompStringSize) HeapFree(GetProcessHeap(),0,CompositionString); dwCompStringSize = 0; dwCompStringLength = 0; CompositionString = NULL; if (dwResultStringSize) HeapFree(GetProcessHeap(),0,ResultString); dwResultStringSize = 0; ResultString = NULL; } IME_SetOpenStatus(fOpen); }