README file of gtk-matsu-981109.patch.gz This patch fixes some problems which make appliction freeze related with XIM, and make application be tolerant to the termination of input method. This patch is diff from gtk+-1.1.3. Takashi Matsuda Akira Higuchi Changes: gdk/gdktypes.h: * Add new enum GdkICAttriburesType, and new struct GdkICAttr. gdk/gdk.c:gdk_ic_new(), gdk_ic_set_attr (), gdk_ic_get_attr () * Changes API from VaList based to Attribute structure based. Now gtk application may not clash when input method dies !! gdk/gdk.c:gdk_ic_{set|get}_values() * removed. gdk/gdk.c:gdk_event_get () * Fix freeze related with redireciton of XFilterEvent. gdk/gdk.c:gdk_event_translate () * Suppress the "lookup reeveals NULL" message related with XIM. * Ignores the FocusIn/FocusOut event of which mode is Notify{Grab|Ungrab} for avoid to confuse ICFocus. gtk/gtkeditable.h: * Add new member ic_attr. gtk/gtkeditable.c: gtk_editable_finalize () * remove this method. gdk_ic_destroy () must be called in more intimate widget, which knows the client_window and destroys ic exactly before client_window. gtk/{gtkentry.c|gtktext.c}:gtk_*_unrealize () * call gdk_ic_destroy in this method. gtk/gtkentry.c:gtk_entry_draw_cursor_on_drawable () * Check if widget has focus for cope with some IM. With this im, setting attributes to ic which does not have ic_focus caused problem. gtk/gtkwidget.c:gtk_wiget_real_unrealize() * Unrealize child widget before parent. KNOWN BUG: * If input method dies during processing XFilterEvent, it seems there is no way to prevent a application clashing. * If input method is not running when gtkeditable or it's descendant is realized, that widget can't use XIM. If you want to use XIM, you must destroy the widget and re-create it (e.g. close the window and open again). * If different IM starts and it's capability (i.e. supported style, required filter_events, etc) is differ than previous IM, result is unpredictable.