-
-#ifdef HAVE_XIM
- #define WXUNUSED_UNLESS_XIM(param) param
-#else
- #define WXUNUSED_UNLESS_XIM(param) WXUNUSED(param)
-#endif
-
-/* Resize XIM window */
-static
-void gtk_wxwindow_size_callback( GtkWidget* WXUNUSED_UNLESS_XIM(widget),
- GtkAllocation* WXUNUSED_UNLESS_XIM(alloc),
- wxWindowGTK* WXUNUSED_UNLESS_XIM(win) )
-{
- if (g_isIdle)
- wxapp_install_idle_handler();
-
-#ifdef HAVE_XIM
- if (!win->m_ic)
- return;
-
- if (gdk_ic_get_style (win->m_ic) & GDK_IM_PREEDIT_POSITION)
- {
- gint width, height;
-
- gdk_drawable_get_size (widget->window, &width, &height);
- win->m_icattr->preedit_area.width = width;
- win->m_icattr->preedit_area.height = height;
- gdk_ic_set_attr (win->m_ic, win->m_icattr, GDK_IC_PREEDIT_AREA);
- }
-#endif // HAVE_XIM
-}
-
-//-----------------------------------------------------------------------------
-// "realize" from m_wxwindow
-//-----------------------------------------------------------------------------
-
-/* Initialize XIM support */
-
-static void
-gtk_wxwindow_realized_callback( GtkWidget * WXUNUSED_UNLESS_XIM(widget),
- wxWindowGTK * WXUNUSED_UNLESS_XIM(win) )
-{
- if (g_isIdle)
- wxapp_install_idle_handler();
-
-#ifdef HAVE_XIM
- if (win->m_ic) return;
- if (!widget) return;
- if (!gdk_im_ready()) return;
-
- win->m_icattr = gdk_ic_attr_new();
- if (!win->m_icattr) return;
-
- gint width, height;
- GdkEventMask mask;
- GdkColormap *colormap;
- GdkICAttr *attr = win->m_icattr;
- unsigned attrmask = GDK_IC_ALL_REQ;
- GdkIMStyle style;
- GdkIMStyle supported_style = (GdkIMStyle)
- (GDK_IM_PREEDIT_NONE |
- GDK_IM_PREEDIT_NOTHING |
- GDK_IM_PREEDIT_POSITION |
- GDK_IM_STATUS_NONE |
- GDK_IM_STATUS_NOTHING);
-
- if (widget->style && widget->style->font->type != GDK_FONT_FONTSET)
- supported_style = (GdkIMStyle)(supported_style & ~GDK_IM_PREEDIT_POSITION);
-
- attr->style = style = gdk_im_decide_style (supported_style);
- attr->client_window = widget->window;
-
- if ((colormap = gtk_widget_get_colormap (widget)) !=
- gtk_widget_get_default_colormap ())
- {
- attrmask |= GDK_IC_PREEDIT_COLORMAP;
- attr->preedit_colormap = colormap;
- }
-
- attrmask |= GDK_IC_PREEDIT_FOREGROUND;
- attrmask |= GDK_IC_PREEDIT_BACKGROUND;
- attr->preedit_foreground = widget->style->fg[GTK_STATE_NORMAL];
- attr->preedit_background = widget->style->base[GTK_STATE_NORMAL];
-
- switch (style & GDK_IM_PREEDIT_MASK)
- {
- case GDK_IM_PREEDIT_POSITION:
- if (widget->style && widget->style->font->type != GDK_FONT_FONTSET)
- {
- g_warning ("over-the-spot style requires fontset");
- break;
- }
-
- gdk_drawable_get_size (widget->window, &width, &height);
-
- attrmask |= GDK_IC_PREEDIT_POSITION_REQ;
- attr->spot_location.x = 0;
- attr->spot_location.y = height;
- attr->preedit_area.x = 0;
- attr->preedit_area.y = 0;
- attr->preedit_area.width = width;
- attr->preedit_area.height = height;
- attr->preedit_fontset = widget->style->font;
-
- break;
- }
-
- win->m_ic = gdk_ic_new (attr, (GdkICAttributesType)attrmask);
-
- if (win->m_ic == NULL)
- g_warning ("Can't create input context.");
- else
- {
- mask = gdk_window_get_events (widget->window);
- mask = (GdkEventMask)(mask | gdk_ic_get_events (win->m_ic));
- gdk_window_set_events (widget->window, mask);
-
- if (GTK_WIDGET_HAS_FOCUS(widget))
- gdk_im_begin (win->m_ic, widget->window);
- }
-#endif // HAVE_XIM
-}
-