diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-03-09 20:28:20 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-03-09 20:28:20 +0000 |
commit | 79fed460d99ffeb75d8b4f71654a01ebf657b5e9 (patch) | |
tree | ca385890a5326a2c1de6a567533dd1c07d784f10 | |
parent | f4cd3854c5427cb6a278a2edb47118f51dc25b4f (diff) | |
download | gtk+-79fed460d99ffeb75d8b4f71654a01ebf657b5e9.tar.gz |
Remove old XIM code.
Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch]
gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c
gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c
gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code.
* gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove
gdk_im/gdk_ic.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 10 | ||||
-rw-r--r-- | gdk/Makefile.am | 1 | ||||
-rw-r--r-- | gdk/gdk.c | 10 | ||||
-rw-r--r-- | gdk/gdk.h | 1 | ||||
-rw-r--r-- | gdk/gdkinternals.h | 7 | ||||
-rw-r--r-- | gdk/linux-fb/gdkim-fb.c | 99 | ||||
-rw-r--r-- | gdk/win32/gdkim-win32.c | 85 | ||||
-rw-r--r-- | gdk/x11/gdkevents-x11.c | 107 | ||||
-rw-r--r-- | gdk/x11/gdkglobals-x11.c | 3 | ||||
-rw-r--r-- | gdk/x11/gdkim-x11.c | 1372 | ||||
-rw-r--r-- | gdk/x11/gdkmain-x11.c | 30 | ||||
-rw-r--r-- | gdk/x11/gdkprivate-x11.h | 6 | ||||
-rw-r--r-- | gdk/x11/gdkx.h | 16 | ||||
-rw-r--r-- | gtk/gtkoldeditable.c | 4 | ||||
-rw-r--r-- | gtk/gtkoldeditable.h | 2 | ||||
-rw-r--r-- | gtk/gtktext.c | 125 |
22 files changed, 71 insertions, 1867 deletions
@@ -1,3 +1,13 @@ +Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com> + + * gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch] + gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c + gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c + gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code. + + * gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove + gdk_im/gdk_ic. + 2001-03-09 Hans Breuer <hans@breuer.org> * gdk/gdk.def : updated diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 364f0e9d76..5a90922c7b 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,13 @@ +Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com> + + * gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch] + gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c + gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c + gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code. + + * gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove + gdk_im/gdk_ic. + 2001-03-09 Hans Breuer <hans@breuer.org> * gdk/gdk.def : updated diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 364f0e9d76..5a90922c7b 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,13 @@ +Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com> + + * gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch] + gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c + gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c + gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code. + + * gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove + gdk_im/gdk_ic. + 2001-03-09 Hans Breuer <hans@breuer.org> * gdk/gdk.def : updated diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 364f0e9d76..5a90922c7b 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,13 @@ +Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com> + + * gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch] + gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c + gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c + gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code. + + * gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove + gdk_im/gdk_ic. + 2001-03-09 Hans Breuer <hans@breuer.org> * gdk/gdk.def : updated diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 364f0e9d76..5a90922c7b 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,13 @@ +Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com> + + * gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch] + gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c + gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c + gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code. + + * gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove + gdk_im/gdk_ic. + 2001-03-09 Hans Breuer <hans@breuer.org> * gdk/gdk.def : updated diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 364f0e9d76..5a90922c7b 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,13 @@ +Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com> + + * gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch] + gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c + gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c + gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code. + + * gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove + gdk_im/gdk_ic. + 2001-03-09 Hans Breuer <hans@breuer.org> * gdk/gdk.def : updated diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 364f0e9d76..5a90922c7b 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,13 @@ +Wed Mar 7 20:47:41 2001 Owen Taylor <otaylor@redhat.com> + + * gtk/gtktext.c gtk/gtkoldeditable.[ch] gdk/gdk.[ch] + gdk/Makefile.am gdk/x11/Makefile.am gdk/x11/gdkevents-x11.c + gdk/x11/gdkglobals-x11.c gdk/x11/gdkprivate-x11.c + gdk/x11/gdkx.h gdk/x11/gdkim-x11.c: Remove old XIM code. + + * gdk/win32/gdkim-win32.c gdk/linux-fb/gdkim-fb.c: Remove + gdk_im/gdk_ic. + 2001-03-09 Hans Breuer <hans@breuer.org> * gdk/gdk.def : updated diff --git a/gdk/Makefile.am b/gdk/Makefile.am index 3aafb1a4b6..a2d3e3c4df 100644 --- a/gdk/Makefile.am +++ b/gdk/Makefile.am @@ -62,7 +62,6 @@ gdk_public_h_sources = @STRIP_BEGIN@ \ gdkgc.h \ gdkkeysyms.h \ gdki18n.h \ - gdkim.h \ gdkimage.h \ gdkinput.h \ gdkkeys.h \ @@ -340,10 +340,6 @@ gdk_init_check (int *argc, gdk_input_init (); gdk_dnd_init (); -#ifdef USE_XIM - gdk_im_open (); -#endif - gdk_initialized = 1; return TRUE; @@ -424,12 +420,6 @@ gdk_exit_func (void) if (gdk_initialized) { -#ifdef USE_XIM - /* cleanup IC */ - gdk_ic_cleanup (); - /* close IM */ - gdk_im_close (); -#endif gdk_image_exit (); gdk_input_exit (); gdk_key_repeat_restore (); @@ -34,7 +34,6 @@ #include <gdk/gdkevents.h> #include <gdk/gdkfont.h> #include <gdk/gdkgc.h> -#include <gdk/gdkim.h> #include <gdk/gdkimage.h> #include <gdk/gdkinput.h> #include <gdk/gdkkeys.h> diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 5f96ffd7ed..fbcf34658a 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -125,13 +125,6 @@ void gdk_synthesize_window_state (GdkWindow *window, * Interfaces used by windowing code * *************************************/ -#ifdef USE_XIM -/* XIM support */ -gint gdk_im_open (void); -void gdk_im_close (void); -void gdk_ic_cleanup (void); -#endif /* USE_XIM */ - void _gdk_window_destroy (GdkWindow *window, gboolean foreign_destroy); void _gdk_window_clear_update_area (GdkWindow *window); diff --git a/gdk/linux-fb/gdkim-fb.c b/gdk/linux-fb/gdkim-fb.c index d2a7f2d897..7330f40d64 100644 --- a/gdk/linux-fb/gdkim-fb.c +++ b/gdk/linux-fb/gdkim-fb.c @@ -97,90 +97,6 @@ gdk_set_locale (void) return current_locale; } -void -gdk_im_begin (GdkIC *ic, GdkWindow* window) -{ -} - -void -gdk_im_end (void) -{ -} - -GdkIMStyle -gdk_im_decide_style (GdkIMStyle supported_style) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -GdkIMStyle -gdk_im_set_best_style (GdkIMStyle style) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -gint -gdk_im_ready (void) -{ - return FALSE; -} - -gint -gdk_im_open(void) -{ - return TRUE; -} - -void -gdk_im_close(void) -{ -} - -GdkIC * -gdk_ic_new (GdkICAttr *attr, GdkICAttributesType mask) -{ - return NULL; -} - -void -gdk_ic_destroy (GdkIC *ic) -{ -} - -GdkIMStyle -gdk_ic_get_style (GdkIC *ic) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -void -gdk_ic_set_values (GdkIC *ic, ...) -{ -} - -void -gdk_ic_get_values (GdkIC *ic, ...) -{ -} - -GdkICAttributesType -gdk_ic_set_attr (GdkIC *ic, GdkICAttr *attr, GdkICAttributesType mask) -{ - return 0; -} - -GdkICAttributesType -gdk_ic_get_attr (GdkIC *ic, GdkICAttr *attr, GdkICAttributesType mask) -{ - return 0; -} - -GdkEventMask -gdk_ic_get_events (GdkIC *ic) -{ - return 0; -} - /* * gdk_wcstombs * @@ -225,18 +141,3 @@ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max) return i; } - -void -gdk_ic_cleanup(void) -{ -} - -GdkICAttr* gdk_ic_attr_new (void) -{ - return NULL; -} - -void -gdk_ic_attr_destroy (GdkICAttr *attr) -{ -} diff --git a/gdk/win32/gdkim-win32.c b/gdk/win32/gdkim-win32.c index 9567ce1970..bb9502a80f 100644 --- a/gdk/win32/gdkim-win32.c +++ b/gdk/win32/gdkim-win32.c @@ -30,7 +30,6 @@ #include <string.h> #include <locale.h> -#include "gdkim.h" #include "gdkpixmap.h" #include "gdkinternals.h" #include "gdki18n.h" @@ -58,90 +57,6 @@ gdk_set_locale (void) return g_win32_getlocale (); } -void -gdk_im_begin (GdkIC *ic, GdkWindow* window) -{ -} - -void -gdk_im_end (void) -{ -} - -GdkIMStyle -gdk_im_decide_style (GdkIMStyle supported_style) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -GdkIMStyle -gdk_im_set_best_style (GdkIMStyle style) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -gint -gdk_im_ready (void) -{ - return FALSE; -} - -GdkIC * -gdk_ic_new (GdkICAttr *attr, GdkICAttributesType mask) -{ - return NULL; -} - -void -gdk_ic_destroy (GdkIC *ic) -{ -} - -GdkIMStyle -gdk_ic_get_style (GdkIC *ic) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -GdkICAttr* -gdk_ic_attr_new (void) -{ - return NULL; -} - -void -gdk_ic_attr_destroy (GdkICAttr *attr) -{ -} - -void -gdk_ic_set_values (GdkIC *ic, ...) -{ -} - -void -gdk_ic_get_values (GdkIC *ic, ...) -{ -} - -GdkICAttributesType -gdk_ic_set_attr (GdkIC *ic, GdkICAttr *attr, GdkICAttributesType mask) -{ - return 0; -} - -GdkICAttributesType -gdk_ic_get_attr (GdkIC *ic, GdkICAttr *attr, GdkICAttributesType mask) -{ - return 0; -} - -GdkEventMask -gdk_ic_get_events (GdkIC *ic) -{ - return 0; -} - /* * gdk_wcstombs * diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c index 2c015535f3..90cbb60223 100644 --- a/gdk/x11/gdkevents-x11.c +++ b/gdk/x11/gdkevents-x11.c @@ -397,12 +397,7 @@ gdk_event_translate (GdkEvent *event, static XComposeStatus compose; KeySym keysym; int charcount; -#ifdef USE_XIM - static gchar* buf = NULL; - static gint buf_len= 0; -#else char buf[16]; -#endif gint return_val; gint xoffset, yoffset; @@ -471,41 +466,6 @@ gdk_event_translate (GdkEvent *event, } } -#ifdef USE_XIM - if (window == NULL && gdk_xim_window && xevent->type == KeyPress && - !GDK_WINDOW_DESTROYED (gdk_xim_window)) - { - /* - * If user presses a key in Preedit or Status window, keypress event - * is sometimes sent to these windows. These windows are not managed - * by GDK, so we redirect KeyPress event to xim_window. - * - * If someone want to use the window whitch is not managed by GDK - * and want to get KeyPress event, he/she must register the filter - * function to gdk_default_filters to intercept the event. - */ - - GdkFilterReturn result; - - window = gdk_xim_window; - window_private = (GdkWindowObject *) window; - gdk_window_ref (window); - event->any.window = window; - - GDK_NOTE (XIM, - g_message ("KeyPress event is redirected to xim_window: %#lx", - xevent->xany.window)); - - result = gdk_event_apply_filters (xevent, event, - window_private->filters); - if (result != GDK_FILTER_CONTINUE) - { - return_val = (result == GDK_FILTER_TRANSLATE) ? TRUE : FALSE; - goto done; - } - } -#endif - /* We do a "manual" conversion of the XEvent to a * GdkEvent. The structures are mostly the same so * the conversion is fairly straightforward. We also @@ -531,49 +491,8 @@ gdk_event_translate (GdkEvent *event, /* Lookup the string corresponding to the given keysym. */ -#ifdef USE_XIM - if (buf_len == 0) - { - buf_len = 128; - buf = g_new (gchar, buf_len); - } - keysym = GDK_VoidSymbol; - - if (gdk_xim_ic && gdk_xim_ic->xic) - { - Status status; - - /* Clear keyval. Depending on status, may not be set */ - charcount = XmbLookupString(gdk_xim_ic->xic, - &xevent->xkey, buf, buf_len-1, - &keysym, &status); - if (status == XBufferOverflow) - { /* retry */ - /* alloc adequate size of buffer */ - GDK_NOTE (XIM, - g_message("XIM: overflow (required %i)", charcount)); - - while (buf_len <= charcount) - buf_len *= 2; - buf = (gchar *) g_realloc (buf, buf_len); - - charcount = XmbLookupString (gdk_xim_ic->xic, - &xevent->xkey, buf, buf_len-1, - &keysym, &status); - } - if (status == XLookupNone) - { - return_val = FALSE; - break; - } - } - else - charcount = XLookupString (&xevent->xkey, buf, buf_len, - &keysym, &compose); -#else charcount = XLookupString (&xevent->xkey, buf, 16, &keysym, &compose); -#endif event->key.keyval = keysym; event->key.hardware_keycode = xevent->xkey.keycode; @@ -631,13 +550,6 @@ gdk_event_translate (GdkEvent *event, break; } -#ifdef USE_XIM - if (buf_len == 0) - { - buf_len = 128; - buf = g_new (gchar, buf_len); - } -#endif keysym = GDK_VoidSymbol; charcount = XLookupString (&xevent->xkey, buf, 16, &keysym, &compose); @@ -1476,26 +1388,7 @@ gdk_events_queue (void) while (!gdk_event_queue_find_first() && XPending (gdk_display)) { -#ifdef USE_XIM - Window w = None; - XNextEvent (gdk_display, &xevent); - if (gdk_xim_window) - switch (xevent.type) - { - case KeyPress: - case KeyRelease: - case ButtonPress: - case ButtonRelease: - w = GDK_WINDOW_XWINDOW (gdk_xim_window); - break; - } - - if (XFilterEvent (&xevent, w)) - continue; -#else - XNextEvent (gdk_display, &xevent); -#endif switch (xevent.type) { diff --git a/gdk/x11/gdkglobals-x11.c b/gdk/x11/gdkglobals-x11.c index f7ca954fbf..104b79f9ef 100644 --- a/gdk/x11/gdkglobals-x11.c +++ b/gdk/x11/gdkglobals-x11.c @@ -45,9 +45,6 @@ gchar *gdk_progclass = NULL; gboolean gdk_null_window_warnings = TRUE; gboolean gdk_xim_using; /* using XIM Protocol if TRUE */ -#ifdef USE_XIM -GdkICPrivate *gdk_xim_ic; /* currently using IC */ -#endif /* USE_XIM */ GdkWindow *gdk_xim_window; /* currently using Widow */ GdkWindowObject *gdk_xgrab_window = NULL; /* Window that currently holds the diff --git a/gdk/x11/gdkim-x11.c b/gdk/x11/gdkim-x11.c index 27a31a5790..515039e251 100644 --- a/gdk/x11/gdkim-x11.c +++ b/gdk/x11/gdkim-x11.c @@ -47,45 +47,6 @@ */ static gboolean gdk_use_mb; -#ifdef USE_XIM - -#include <stdarg.h> -#include <X11/Xresource.h> - -/* The following routines duplicate functionality in Xlib to - * translate from varargs to X's internal opaque XVaNestedList. - * - * If all vendors have stuck close to the reference implementation, - * then we should hopefully be OK. - */ - -typedef struct { - gchar *name; - gpointer value; -} GdkImArg; - -#ifdef USE_X11R6_XIM -static void gdk_im_instantiate_cb (Display *display, - XPointer client_data, - XPointer call_data); -#endif -static void gdk_im_destroy_cb (XIM im, - XPointer client_data, - XPointer call_data); -static gint gdk_im_real_open (void); -static void gdk_ic_real_new (GdkIC *ic); - -static GdkICAttributesType gdk_ic_real_set_attr (GdkIC *ic, - GdkICAttr *attr, - GdkICAttributesType mask); - -static XIM xim_im; /* global IM */ -static XIMStyles* xim_styles; /* im supports these styles */ -static XIMStyle xim_best_allowed_style; -static GList* xim_ic_list; - -#endif /* USE_XIM */ - /* *-------------------------------------------------------------- * gdk_set_locale @@ -149,1339 +110,6 @@ gdk_set_locale (void) return current_locale; } -#ifdef USE_XIM - -/* - *-------------------------------------------------------------- - * gdk_im_begin - * - * Begin using input method with XIM Protocol(X11R6 standard) - * - * Arguments: - * "ic" is the "Input Context" which is created by gtk_ic_new. - * The input area is specified with "window". - * - * Results: - * The gdk's event handling routine is switched to XIM based routine. - * XIM based routine uses XFilterEvent to get rid of events used by IM, - * and uses XmbLookupString instead of XLookupString. - * - * Side effects: - * - *-------------------------------------------------------------- - */ - -void -gdk_im_begin (GdkIC *ic, GdkWindow* window) -{ - GdkICPrivate *private; - GdkICAttr attr; - - g_return_if_fail (ic != NULL); - - private = (GdkICPrivate *) ic; - - attr.focus_window = window; - gdk_ic_set_attr (ic, &attr, GDK_IC_FOCUS_WINDOW); - - if (private != gdk_xim_ic) - { - gdk_im_end(); - if (private->xic) - { - XSetICFocus (private->xic); - GDK_NOTE (XIM, g_message ("im_begin icfocus : %p(%ld)\n", - private->xic, - GDK_WINDOW_XWINDOW(private->attr->focus_window))); - } - } - gdk_xim_ic = private; - gdk_xim_window = window; -} - -/* - *-------------------------------------------------------------- - * gdk_im_end - * - * End using input method with XIM Protocol(X11R6 standard) - * - * Arguments: - * - * Results: - * The gdk's event handling routine is switched to normal routine. - * User should call this function before ic and window will be destroyed. - * - * Side effects: - * - *-------------------------------------------------------------- - */ - -void -gdk_im_end (void) -{ - if (gdk_xim_ic && gdk_xim_ic->xic) - { - XUnsetICFocus (gdk_xim_ic->xic); - GDK_NOTE (XIM, g_message ("im_end unfocus : %p\n", gdk_xim_ic->xic)); - } - gdk_xim_ic = NULL; - gdk_xim_window = NULL; -} - -static GdkIMStyle -gdk_im_choose_better_style (GdkIMStyle style1, GdkIMStyle style2) -{ - GdkIMStyle s1, s2, u; - - if (style1 == 0) return style2; - if (style2 == 0) return style1; - if ((style1 & (GDK_IM_PREEDIT_MASK | GDK_IM_STATUS_MASK)) - == (style2 & (GDK_IM_PREEDIT_MASK | GDK_IM_STATUS_MASK))) - return style1; - - s1 = style1 & GDK_IM_PREEDIT_MASK; - s2 = style2 & GDK_IM_PREEDIT_MASK; - u = s1 | s2; - if (s1 != s2) { - if (u & GDK_IM_PREEDIT_CALLBACKS) - return (s1 == GDK_IM_PREEDIT_CALLBACKS)? style1:style2; - else if (u & GDK_IM_PREEDIT_POSITION) - return (s1 == GDK_IM_PREEDIT_POSITION)? style1:style2; - else if (u & GDK_IM_PREEDIT_AREA) - return (s1 == GDK_IM_PREEDIT_AREA)? style1:style2; - else if (u & GDK_IM_PREEDIT_NOTHING) - return (s1 == GDK_IM_PREEDIT_NOTHING)? style1:style2; - } else { - s1 = style1 & GDK_IM_STATUS_MASK; - s2 = style2 & GDK_IM_STATUS_MASK; - u = s1 | s2; - if ( u & GDK_IM_STATUS_CALLBACKS) - return (s1 == GDK_IM_STATUS_CALLBACKS)? style1:style2; - else if ( u & GDK_IM_STATUS_AREA) - return (s1 == GDK_IM_STATUS_AREA)? style1:style2; - else if ( u & GDK_IM_STATUS_NOTHING) - return (s1 == GDK_IM_STATUS_NOTHING)? style1:style2; - else if ( u & GDK_IM_STATUS_NONE) - return (s1 == GDK_IM_STATUS_NONE)? style1:style2; - } - return 0; /* Get rid of stupid warning */ -} - -GdkIMStyle -gdk_im_decide_style (GdkIMStyle supported_style) -{ - gint i; - GdkIMStyle style, tmp; - - g_return_val_if_fail (xim_styles != NULL, 0); - - style = 0; - for (i=0; i<xim_styles->count_styles; i++) - { - tmp = xim_styles->supported_styles[i]; - if (tmp == (tmp & supported_style & xim_best_allowed_style)) - style = gdk_im_choose_better_style (style, tmp); - } - return style; -} - -GdkIMStyle -gdk_im_set_best_style (GdkIMStyle style) -{ - if (style & GDK_IM_PREEDIT_MASK) - { - xim_best_allowed_style &= ~GDK_IM_PREEDIT_MASK; - - xim_best_allowed_style |= GDK_IM_PREEDIT_NONE; - if (!(style & GDK_IM_PREEDIT_NONE)) - { - xim_best_allowed_style |= GDK_IM_PREEDIT_NOTHING; - if (!(style & GDK_IM_PREEDIT_NOTHING)) - { - xim_best_allowed_style |= GDK_IM_PREEDIT_AREA; - if (!(style & GDK_IM_PREEDIT_AREA)) - { - xim_best_allowed_style |= GDK_IM_PREEDIT_POSITION; - if (!(style & GDK_IM_PREEDIT_POSITION)) - xim_best_allowed_style |= GDK_IM_PREEDIT_CALLBACKS; - } - } - } - } - if (style & GDK_IM_STATUS_MASK) - { - xim_best_allowed_style &= ~GDK_IM_STATUS_MASK; - - xim_best_allowed_style |= GDK_IM_STATUS_NONE; - if (!(style & GDK_IM_STATUS_NONE)) - { - xim_best_allowed_style |= GDK_IM_STATUS_NOTHING; - if (!(style & GDK_IM_STATUS_NOTHING)) - { - xim_best_allowed_style |= GDK_IM_STATUS_AREA; - if (!(style & GDK_IM_STATUS_AREA)) - xim_best_allowed_style |= GDK_IM_STATUS_CALLBACKS; - } - } - } - - return xim_best_allowed_style; -} - -#ifdef USE_X11R6_XIM -static void -gdk_im_destroy_cb (XIM im, XPointer client_data, XPointer call_data) -{ - GList *node; - GdkICPrivate *private; - - GDK_NOTE (XIM, g_message ("Ouch, Input Method is destroyed!!\n")); - - xim_im = NULL; - - if (xim_styles) - { - XFree (xim_styles); - xim_styles = NULL; - } - - for (node = xim_ic_list; node != NULL; node = g_list_next(node)) - { - private = (GdkICPrivate *) (node->data); - private->xic = NULL; - } - - XRegisterIMInstantiateCallback (gdk_display, NULL, NULL, NULL, - gdk_im_instantiate_cb, NULL); -} - -static void -gdk_im_instantiate_cb (Display *display, - XPointer client_data, XPointer call_data) -{ - GDK_NOTE (XIM, g_message ("New IM is instantiated.")); - if (display != gdk_display) - return; - - gdk_im_real_open (); - - if (xim_im != NULL) - XUnregisterIMInstantiateCallback (gdk_display, NULL, NULL, NULL, - gdk_im_instantiate_cb, NULL); -} -#endif - -static gint -gdk_im_real_open (void) -{ - GList *node; - - xim_im = XOpenIM (GDK_DISPLAY(), NULL, NULL, NULL); - if (xim_im == NULL) - { - GDK_NOTE (XIM, g_warning ("Unable to open IM.")); - return FALSE; - } - else - { -#ifdef USE_X11R6_XIM - XIMCallback destroy_cb; - - destroy_cb.callback = gdk_im_destroy_cb; - destroy_cb.client_data = NULL; - if (NULL != (void *) XSetIMValues (xim_im, XNDestroyCallback, &destroy_cb, NULL)) - GDK_NOTE (XIM, g_warning ("Could not set destroy callback to IM. Be careful to not destroy your input method.")); -#endif - - XGetIMValues (xim_im, XNQueryInputStyle, &xim_styles, NULL, NULL); - - for (node = xim_ic_list; node != NULL; node = g_list_next(node)) - { - GdkICPrivate *private = (GdkICPrivate *) (node->data); - if (private->xic == NULL) - gdk_ic_real_new ((GdkIC *)private); - } - return TRUE; - } -} - -gint -gdk_im_open (void) -{ - gdk_xim_ic = NULL; - gdk_xim_window = (GdkWindow*)NULL; - xim_im = NULL; - xim_styles = NULL; - - /* initialize XIM Protocol variables */ - if (!(xim_best_allowed_style & GDK_IM_PREEDIT_MASK)) - gdk_im_set_best_style (GDK_IM_PREEDIT_CALLBACKS); - if (!(xim_best_allowed_style & GDK_IM_STATUS_MASK)) - gdk_im_set_best_style (GDK_IM_STATUS_CALLBACKS); - - if (gdk_im_real_open ()) - return TRUE; - -#ifdef USE_X11R6_XIM - XRegisterIMInstantiateCallback (gdk_display, NULL, NULL, NULL, - gdk_im_instantiate_cb, NULL); -#endif - - return FALSE; -} - -void -gdk_im_close (void) -{ - if (xim_im) - { - XCloseIM (xim_im); - xim_im = NULL; - } - if (xim_styles) - { - XFree (xim_styles); - xim_styles = NULL; - } -} - -gboolean -gdk_im_ready (void) -{ - return (xim_im != NULL); -} - -static void -gdk_ic_real_new (GdkIC *ic) -{ - XPoint spot_location; - XRectangle preedit_area; - XRectangle status_area; - XVaNestedList *preedit_attr = NULL; - XVaNestedList *status_attr = NULL; - GdkICAttr *attr; - GdkICPrivate *private; - GdkICAttributesType mask = GDK_IC_ALL_REQ; - - private = (GdkICPrivate *) ic; - attr = private->attr; - - switch (attr->style & GDK_IM_PREEDIT_MASK) - { - case GDK_IM_PREEDIT_AREA: - mask |= GDK_IC_PREEDIT_AREA_REQ; - - preedit_area.x = attr->preedit_area.x; - preedit_area.y = attr->preedit_area.y; - preedit_area.width = attr->preedit_area.width; - preedit_area.height = attr->preedit_area.height; - - preedit_attr = XVaCreateNestedList (0, - XNArea, &preedit_area, - XNFontSet, - GDK_FONT_XFONT(attr->preedit_fontset), - NULL); - break; - - case GDK_IM_PREEDIT_POSITION: - mask |= GDK_IC_PREEDIT_POSITION_REQ; - - preedit_area.x = attr->preedit_area.x; - preedit_area.y = attr->preedit_area.y; - preedit_area.width = attr->preedit_area.width; - preedit_area.height = attr->preedit_area.height; - - spot_location.x = attr->spot_location.x; - spot_location.y = attr->spot_location.y; - - preedit_attr = XVaCreateNestedList (0, - XNArea, &preedit_area, - XNFontSet, - GDK_FONT_XFONT(attr->preedit_fontset), - XNSpotLocation, &spot_location, - NULL); - break; - } - - switch (attr->style & GDK_IM_STATUS_MASK) - { - case GDK_IM_STATUS_AREA: - mask |= GDK_IC_STATUS_AREA_REQ; - - status_area.x = attr->status_area.x; - status_area.y = attr->status_area.y; - status_area.width = attr->status_area.width; - status_area.height = attr->status_area.height; - - status_attr = XVaCreateNestedList (0, - XNArea, &status_area, - XNFontSet, - GDK_FONT_XFONT(attr->status_fontset), - NULL); - break; - } - - /* We have to ensure that the client window is actually created on - * the X server, or XCreateIC fails because the XIM server can't get - * information about the client window. - */ - gdk_flush(); - - if (preedit_attr != NULL && status_attr != NULL) - private->xic = XCreateIC (xim_im, - XNInputStyle, - attr->style, - XNClientWindow, - GDK_WINDOW_XWINDOW(attr->client_window), - XNPreeditAttributes, - preedit_attr, - XNStatusAttributes, - status_attr, - NULL); - else if (preedit_attr != NULL) - private->xic = XCreateIC (xim_im, - XNInputStyle, - attr->style, - XNClientWindow, - GDK_WINDOW_XWINDOW(attr->client_window), - XNPreeditAttributes, - preedit_attr, - NULL); - else if (status_attr != NULL) - private->xic = XCreateIC (xim_im, - XNInputStyle, - attr->style, - XNClientWindow, - GDK_WINDOW_XWINDOW(attr->client_window), - XNStatusAttributes, - status_attr, - NULL); - else - private->xic = XCreateIC (xim_im, - XNInputStyle, - attr->style, - XNClientWindow, - GDK_WINDOW_XWINDOW(attr->client_window), - NULL); - - if (preedit_attr) - XFree (preedit_attr); - if (status_attr) - XFree (status_attr); - - if (private->xic == NULL) - g_warning ("can not create input context with specified input style."); - else - gdk_ic_real_set_attr (ic, private->attr, private->mask & ~mask); -} - -GdkIC * -gdk_ic_new (GdkICAttr *attr, GdkICAttributesType mask) -{ - GdkICPrivate *private; - gboolean error = 0; - GdkICAttributesType invalid_mask; - GdkICAttr *pattr; - - g_return_val_if_fail (attr != NULL, NULL); - g_return_val_if_fail ((mask & GDK_IC_ALL_REQ) == GDK_IC_ALL_REQ, NULL); - - switch (attr->style & GDK_IM_PREEDIT_MASK) - { - case 0: - g_warning ("preedit style is not specified.\n"); - error = 1; - break; - - case GDK_IM_PREEDIT_AREA: - if ((mask & GDK_IC_PREEDIT_AREA_REQ) != GDK_IC_PREEDIT_AREA_REQ) - error = 4; - break; - - case GDK_IM_PREEDIT_POSITION: - if ((mask & GDK_IC_PREEDIT_POSITION_REQ) != GDK_IC_PREEDIT_POSITION_REQ) - error = 4; - break; - } - - switch (attr->style & GDK_IM_STATUS_MASK) - { - case 0: - g_warning ("status style is not specified.\n"); - error = 2; - break; - - case GDK_IM_STATUS_AREA: - if ((mask & GDK_IC_STATUS_AREA_REQ) != GDK_IC_STATUS_AREA_REQ) - error = 8; - break; - } - - if (error) - { - if (error & 12) - g_warning ("IC attribute is not enough to required input style.\n"); - return NULL; - } - - if (attr->client_window == NULL || - GDK_WINDOW_DESTROYED (attr->client_window)) - { - g_warning ("Client_window is null or already destroyed.\n"); - return NULL; - } - - private = g_new0 (GdkICPrivate, 1); - private->attr = pattr = gdk_ic_attr_new (); - - gdk_window_ref (attr->client_window); - pattr->client_window = attr->client_window; - pattr->style = attr->style; - private->mask = GDK_IC_STYLE | GDK_IC_CLIENT_WINDOW; - - /* XIC is still not created, so following call only copies attributes */ - invalid_mask = gdk_ic_set_attr ((GdkIC *)private, attr, mask & ~GDK_IC_ALL_REQ); - - switch (attr->style & GDK_IM_PREEDIT_MASK) - { - case GDK_IM_PREEDIT_AREA: - if (invalid_mask & GDK_IC_PREEDIT_AREA_REQ) - error = TRUE; - break; - - case GDK_IM_PREEDIT_POSITION: - if (invalid_mask & GDK_IC_PREEDIT_POSITION_REQ) - error = TRUE; - break; - } - - switch (attr->style & GDK_IM_STATUS_MASK) - { - case GDK_IM_STATUS_AREA: - if (invalid_mask & GDK_IC_STATUS_AREA_REQ) - error = TRUE; - break; - } - - if (error == TRUE) - { - g_warning ("Essential attributes for required style are invalid.\n"); - gdk_ic_destroy ((GdkIC *)private); - return NULL; - } - - if (gdk_im_ready ()) - gdk_ic_real_new ((GdkIC *)private); - - xim_ic_list = g_list_append (xim_ic_list, private); - - return (GdkIC *)private; -} - -void -gdk_ic_destroy (GdkIC *ic) -{ - GdkICPrivate *private; - - g_return_if_fail (ic != NULL); - - private = (GdkICPrivate *) ic; - - if (gdk_xim_ic == private) - gdk_im_end (); - - GDK_NOTE (XIM, g_message ("ic_destroy %p\n", private->xic)); - if (private->xic != NULL) - XDestroyIC (private->xic); - - if (private->mask & GDK_IC_CLIENT_WINDOW) - gdk_window_unref (private->attr->client_window); - if (private->mask & GDK_IC_FOCUS_WINDOW) - gdk_window_unref (private->attr->focus_window); - - if (private->mask & GDK_IC_PREEDIT_FONTSET) - gdk_font_unref (private->attr->preedit_fontset); - if (private->mask & GDK_IC_PREEDIT_PIXMAP) - gdk_pixmap_unref (private->attr->preedit_pixmap); - if (private->mask & GDK_IC_PREEDIT_COLORMAP) - gdk_colormap_unref (private->attr->preedit_colormap); - - if (private->mask & GDK_IC_STATUS_FONTSET) - gdk_font_unref (private->attr->status_fontset); - if (private->mask & GDK_IC_STATUS_PIXMAP) - gdk_pixmap_unref (private->attr->status_pixmap); - if (private->mask & GDK_IC_STATUS_COLORMAP) - gdk_colormap_unref (private->attr->status_colormap); - - xim_ic_list = g_list_remove (xim_ic_list, private); - gdk_ic_attr_destroy (private->attr); - g_free (private); -} - -GdkIMStyle -gdk_ic_get_style (GdkIC *ic) -{ - GdkICPrivate *private; - - g_return_val_if_fail (ic != NULL, 0); - - private = (GdkICPrivate *) ic; - - return private->attr->style; -} - -/* - * for keeping binary compatibility if member of ic attributes is added. - */ -GdkICAttr * -gdk_ic_attr_new (void) -{ - return g_new0 (GdkICAttr, 1); -} - -void -gdk_ic_attr_destroy (GdkICAttr *attr) -{ - g_return_if_fail (attr != NULL); - - g_free (attr); -} - -static GdkICAttributesType -gdk_ic_real_set_attr (GdkIC *ic, - GdkICAttr *attr, - GdkICAttributesType mask) -{ - GdkICPrivate *private = (GdkICPrivate *)ic; - XIC xic = private->xic; - GdkICAttributesType error = 0; - GdkImArg arg[2] = {{NULL, NULL}, {NULL, NULL}}; - - if (mask & GDK_IC_FOCUS_WINDOW) - { - if (XSetICValues (xic, XNFocusWindow, - GDK_WINDOW_XWINDOW(attr->focus_window), NULL) != NULL) - error |= GDK_IC_FOCUS_WINDOW; - } - - if (mask & GDK_IC_SPOT_LOCATION) - { - XPoint point; - - point.x = attr->spot_location.x; - point.y = attr->spot_location.y; - - arg->name = XNSpotLocation; - arg->value = (gpointer) &point; - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_SPOT_LOCATION; - } - - if (mask & GDK_IC_LINE_SPACING) - { - arg->name = XNLineSpace; - arg->value = GINT_TO_POINTER( attr->line_spacing ); - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_LINE_SPACING; - } - - if (mask & GDK_IC_CURSOR) - { - GdkCursorPrivate *cursor = (GdkCursorPrivate *) attr->cursor; - - if (XSetICValues (xic, XNCursor, cursor->xcursor, NULL)) - error |= GDK_IC_CURSOR; - } - - if (mask & GDK_IC_PREEDIT_FONTSET) - { - arg->name = XNFontSet; - arg->value = (gpointer) GDK_FONT_XFONT(attr->preedit_fontset); - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_PREEDIT_FONTSET; - } - - if (mask & GDK_IC_PREEDIT_AREA) - { - XRectangle rect; - - rect.x = attr->preedit_area.x; - rect.y = attr->preedit_area.y; - rect.width = attr->preedit_area.width; - rect.height = attr->preedit_area.height; - - arg->name = XNArea; - arg->value = (gpointer) ▭ - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_PREEDIT_AREA; - } - - if (mask & GDK_IC_PREEDIT_AREA_NEEDED) - { - XRectangle rect; - - rect.x = attr->preedit_area_needed.x; - rect.y = attr->preedit_area_needed.y; - rect.width = attr->preedit_area_needed.width; - rect.height = attr->preedit_area_needed.height; - - arg->name = XNArea; - arg->value = (gpointer) ▭ - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_PREEDIT_AREA_NEEDED; - else - private->mask &= ~GDK_IC_PREEDIT_AREA_NEEDED; - } - - if (mask & GDK_IC_PREEDIT_FOREGROUND) - { - arg->name = XNForeground; - arg->value = (gpointer) attr->preedit_foreground.pixel; - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_PREEDIT_FOREGROUND; - } - - if (mask & GDK_IC_PREEDIT_BACKGROUND) - { - arg->name = XNBackground; - arg->value = (gpointer) attr->preedit_background.pixel; - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_PREEDIT_BACKGROUND; - } - - if (mask & GDK_IC_PREEDIT_PIXMAP) - { - arg->name = XNBackgroundPixmap; - arg->value = (gpointer) GDK_WINDOW_XWINDOW(attr->preedit_pixmap); - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_PREEDIT_PIXMAP; - } - - if (mask & GDK_IC_PREEDIT_COLORMAP) - { - arg->name = XNColormap; - arg->value = (gpointer) GDK_COLORMAP_XCOLORMAP(attr->preedit_colormap); - - if (XSetICValues (xic, XNPreeditAttributes, arg, NULL)) - error |= GDK_IC_PREEDIT_COLORMAP; - } - - - if (mask & GDK_IC_STATUS_FONTSET) - { - arg->name = XNFontSet; - arg->value = (gpointer) GDK_FONT_XFONT(attr->status_fontset); - - if (XSetICValues (xic, XNStatusAttributes, arg, NULL)) - error |= GDK_IC_STATUS_FONTSET; - } - - if (mask & GDK_IC_STATUS_AREA) - { - XRectangle rect; - - rect.x = attr->status_area.x; - rect.y = attr->status_area.y; - rect.width = attr->status_area.width; - rect.height = attr->status_area.height; - - arg->name = XNArea; - arg->value = (gpointer) ▭ - - if (XSetICValues (xic, XNStatusAttributes, arg, NULL)) - error |= GDK_IC_STATUS_AREA; - } - - if (mask & GDK_IC_STATUS_AREA_NEEDED) - { - XRectangle rect; - - rect.x = attr->status_area_needed.x; - rect.y = attr->status_area_needed.y; - rect.width = attr->status_area_needed.width; - rect.height = attr->status_area_needed.height; - - arg->name = XNArea; - arg->value = (gpointer) ▭ - - if (XSetICValues (xic, XNStatusAttributes, arg, NULL)) - error |= GDK_IC_STATUS_AREA_NEEDED; - else - private->mask &= ~GDK_IC_STATUS_AREA_NEEDED; - } - - if (mask & GDK_IC_STATUS_FOREGROUND) - { - arg->name = XNForeground; - arg->value = (gpointer) attr->status_foreground.pixel; - - if (XSetICValues (xic, XNStatusAttributes, arg, NULL)) - error |= GDK_IC_STATUS_FOREGROUND; - } - - if (mask & GDK_IC_STATUS_BACKGROUND) - { - arg->name = XNBackground; - arg->value = (gpointer) attr->status_background.pixel; - - if (XSetICValues (xic, XNStatusAttributes, arg, NULL)) - error |= GDK_IC_STATUS_BACKGROUND; - } - - if (mask & GDK_IC_STATUS_PIXMAP) - { - arg->name = XNBackgroundPixmap; - arg->value = (gpointer) GDK_WINDOW_XWINDOW(attr->status_pixmap); - - if (XSetICValues (xic, XNStatusAttributes, arg, NULL)) - error |= GDK_IC_STATUS_PIXMAP; - } - - if (mask & GDK_IC_STATUS_COLORMAP) - { - arg->name = XNColormap; - arg->value = (gpointer) GDK_COLORMAP_XCOLORMAP(attr->status_colormap); - - if (XSetICValues (xic, XNStatusAttributes, arg, NULL)) - error |= GDK_IC_STATUS_COLORMAP; - } - - return error; -} - -GdkICAttributesType -gdk_ic_set_attr (GdkIC *ic, - GdkICAttr *attr, - GdkICAttributesType mask) -{ - GdkICPrivate *private; - GdkICAttr *pattr; - GdkICAttributesType error = 0; - GdkICAttributesType newattr = 0; - - g_return_val_if_fail (ic != NULL, 0); - g_return_val_if_fail (attr != NULL, 0); - - private = (GdkICPrivate *) ic; - pattr = private->attr; - - /* Check and copy new attributes */ - - if (mask & GDK_IC_STYLE) - { - g_warning ("input style can be specified only when creating new ic.\n"); - error |= GDK_IC_STYLE; - } - - if (mask & GDK_IC_FILTER_EVENTS) - { - g_warning ("filter events is read only attributes.\n"); - error |= GDK_IC_FILTER_EVENTS; - } - - if (mask & GDK_IC_CLIENT_WINDOW) - { - g_warning ("client window can be specified only when creating new ic.\n"); - error |= GDK_IC_CLIENT_WINDOW; - } - - if (mask & GDK_IC_FOCUS_WINDOW) - { - if (attr->focus_window == NULL) - { - g_warning ("specified focus_window is invalid.\n"); - error |= GDK_IC_FOCUS_WINDOW; - } - else if (pattr->focus_window != attr->focus_window) - { - if (pattr->focus_window != NULL) - gdk_window_unref (pattr->focus_window); - if (attr->focus_window != NULL) - gdk_window_ref (attr->focus_window); - pattr->focus_window = attr->focus_window; - newattr |= GDK_IC_FOCUS_WINDOW; - } - } - - if (mask & GDK_IC_SPOT_LOCATION) - { - pattr->spot_location = attr->spot_location; - newattr |= GDK_IC_SPOT_LOCATION; - } - - if (mask & GDK_IC_LINE_SPACING) - { - pattr->line_spacing = attr->line_spacing; - newattr |= GDK_IC_LINE_SPACING; - } - - if (mask & GDK_IC_CURSOR) - { - pattr->cursor = attr->cursor; - newattr |= GDK_IC_CURSOR; - } - - if (mask & GDK_IC_PREEDIT_FONTSET) - { - if (attr->preedit_fontset == NULL || - attr->preedit_fontset->type != GDK_FONT_FONTSET) - { - g_warning ("gdk_font is NULL or not a fontset.\n"); - error |= GDK_IC_PREEDIT_FONTSET; - } - else if (pattr->preedit_fontset != attr->preedit_fontset) - { - if (pattr->preedit_fontset != NULL) - gdk_font_unref (pattr->preedit_fontset); - if (attr->preedit_fontset != NULL) - gdk_font_ref (attr->preedit_fontset); - pattr->preedit_fontset = attr->preedit_fontset; - newattr |= GDK_IC_PREEDIT_FONTSET; - } - } - - if (mask & GDK_IC_PREEDIT_AREA) - { - pattr->preedit_area = attr->preedit_area; - newattr |= GDK_IC_PREEDIT_AREA; - } - - if (mask & GDK_IC_PREEDIT_AREA_NEEDED) - { - if (attr->preedit_area_needed.width == 0 || - attr->preedit_area_needed.height == 0) - { - g_warning ("width and height of preedit_area_needed must be non 0.\n"); - error |= GDK_IC_PREEDIT_AREA_NEEDED; - } - else - { - pattr->preedit_area_needed = attr->preedit_area_needed; - newattr |= GDK_IC_PREEDIT_AREA_NEEDED; - } - } - - if (mask & GDK_IC_PREEDIT_FOREGROUND) - { - pattr->preedit_foreground = attr->preedit_foreground; - newattr |= GDK_IC_PREEDIT_FOREGROUND; - } - - if (mask & GDK_IC_PREEDIT_BACKGROUND) - { - pattr->preedit_background = attr->preedit_background; - newattr |= GDK_IC_PREEDIT_BACKGROUND; - } - - if (mask & GDK_IC_PREEDIT_PIXMAP) - { - if (attr->preedit_pixmap != NULL && - GDK_WINDOW_DESTROYED (attr->preedit_pixmap)) - { - g_warning ("Preedit pixmap is already destroyed.\n"); - error |= GDK_IC_PREEDIT_PIXMAP; - } - else - { - if (pattr->preedit_pixmap != attr->preedit_pixmap) - { - if (pattr->preedit_pixmap != NULL) - gdk_pixmap_unref (pattr->preedit_pixmap); - if (attr->preedit_pixmap) - gdk_pixmap_ref (attr->preedit_pixmap); - pattr->preedit_pixmap = attr->preedit_pixmap; - newattr |= GDK_IC_PREEDIT_PIXMAP; - } - } - } - - if (mask & GDK_IC_PREEDIT_COLORMAP) - { - if (pattr->preedit_colormap != attr->preedit_colormap) - { - if (pattr->preedit_colormap != NULL) - gdk_colormap_unref (pattr->preedit_colormap); - if (attr->preedit_colormap != NULL) - gdk_colormap_ref (attr->preedit_colormap); - pattr->preedit_colormap = attr->preedit_colormap; - newattr |= GDK_IC_PREEDIT_COLORMAP; - } - } - - if (mask & GDK_IC_STATUS_FONTSET) - { - if (attr->status_fontset == NULL || - attr->status_fontset->type != GDK_FONT_FONTSET) - { - g_warning ("gdk_font is NULL or not a fontset.\n"); - error |= GDK_IC_STATUS_FONTSET; - } - else if (pattr->status_fontset != attr->status_fontset) - { - if (pattr->status_fontset != NULL) - gdk_font_unref (pattr->status_fontset); - if (attr->status_fontset != NULL) - gdk_font_ref (attr->status_fontset); - pattr->status_fontset = attr->status_fontset; - newattr |= GDK_IC_STATUS_FONTSET; - } - } - - if (mask & GDK_IC_STATUS_AREA) - { - pattr->status_area = attr->status_area; - newattr |= GDK_IC_STATUS_AREA; - } - - if (mask & GDK_IC_STATUS_AREA_NEEDED) - { - if (attr->status_area_needed.width == 0 || - attr->status_area_needed.height == 0) - { - g_warning ("width and height of status_area_needed must be non 0.\n"); - error |= GDK_IC_STATUS_AREA_NEEDED; - } - else - { - pattr->status_area_needed = attr->status_area_needed; - newattr |= GDK_IC_STATUS_AREA_NEEDED; - } - } - - if (mask & GDK_IC_STATUS_FOREGROUND) - { - pattr->status_foreground = attr->status_foreground; - newattr |= GDK_IC_STATUS_FOREGROUND; - } - - if (mask & GDK_IC_STATUS_BACKGROUND) - { - pattr->status_background = attr->status_background; - newattr |= GDK_IC_STATUS_BACKGROUND; - } - - if (mask & GDK_IC_STATUS_PIXMAP) - { - if (attr->status_pixmap != NULL && - GDK_WINDOW_DESTROYED (attr->status_pixmap)) - { - g_warning ("Preedit pixmap is already destroyed.\n"); - error |= GDK_IC_STATUS_PIXMAP; - } - else - { - if (pattr->status_pixmap != attr->status_pixmap) - { - if (pattr->status_pixmap != NULL) - gdk_pixmap_unref (pattr->status_pixmap); - if (attr->status_pixmap) - gdk_pixmap_ref (attr->status_pixmap); - pattr->status_pixmap = attr->status_pixmap; - newattr |= GDK_IC_STATUS_PIXMAP; - } - } - } - - if (mask & GDK_IC_STATUS_COLORMAP) - { - if (pattr->status_colormap != attr->status_colormap) - { - if (pattr->status_colormap != NULL) - gdk_colormap_unref (pattr->status_colormap); - if (attr->status_colormap != NULL) - gdk_colormap_ref (attr->status_colormap); - pattr->status_colormap = attr->status_colormap; - newattr |= GDK_IC_STATUS_COLORMAP; - } - } - - if (private->xic == NULL) - return error; - - error |= gdk_ic_real_set_attr (ic, pattr, newattr); - - return error; -} - -GdkICAttributesType -gdk_ic_get_attr (GdkIC *ic, - GdkICAttr *attr, - GdkICAttributesType mask) -{ - GdkICPrivate *private; - GdkICAttr *pattr; - GdkICAttributesType known, unknown = 0; - - g_return_val_if_fail (ic != NULL, -1); - g_return_val_if_fail (attr != NULL, -1); - - private = (GdkICPrivate *) ic; - pattr = private->attr; - - known = mask & private->mask; - - if (known & GDK_IC_STYLE) - attr->style = pattr->style; - if (known & GDK_IC_CLIENT_WINDOW) - attr->client_window = pattr->client_window; - if (known & GDK_IC_FOCUS_WINDOW) - attr->focus_window = pattr->focus_window; - if (known & GDK_IC_FILTER_EVENTS) - attr->filter_events = pattr->filter_events; - if (known & GDK_IC_LINE_SPACING) - attr->line_spacing = pattr->line_spacing; - if (known & GDK_IC_CURSOR) - attr->cursor = pattr->cursor; - - if (known & GDK_IC_PREEDIT_FONTSET) - attr->preedit_fontset = pattr->preedit_fontset; - if (known & GDK_IC_PREEDIT_AREA) - attr->preedit_area = pattr->preedit_area; - if (known & GDK_IC_PREEDIT_AREA_NEEDED) - attr->preedit_area_needed = pattr->preedit_area_needed; - if (known & GDK_IC_PREEDIT_FOREGROUND) - attr->preedit_foreground = pattr->preedit_foreground; - if (known & GDK_IC_PREEDIT_BACKGROUND) - attr->preedit_background = pattr->preedit_background; - if (known & GDK_IC_PREEDIT_PIXMAP) - attr->preedit_pixmap = pattr->preedit_pixmap; - if (known & GDK_IC_PREEDIT_COLORMAP) - attr->preedit_colormap = pattr->preedit_colormap; - - if (known & GDK_IC_STATUS_FONTSET) - attr->status_fontset = pattr->status_fontset; - if (known & GDK_IC_STATUS_AREA) - attr->status_area = pattr->status_area; - if (known & GDK_IC_STATUS_AREA_NEEDED) - attr->status_area_needed = pattr->status_area_needed; - if (known & GDK_IC_STATUS_FOREGROUND) - attr->status_foreground = pattr->status_foreground; - if (known & GDK_IC_STATUS_BACKGROUND) - attr->status_background = pattr->status_background; - if (known & GDK_IC_STATUS_PIXMAP) - attr->status_pixmap = pattr->status_pixmap; - if (known & GDK_IC_STATUS_COLORMAP) - attr->status_colormap = pattr->status_colormap; - - if (private->xic) - { - unknown = mask & ~(private->mask); - - if (unknown & GDK_IC_FOCUS_WINDOW) - attr->focus_window = pattr->client_window; - if (unknown & GDK_IC_FILTER_EVENTS) - { - gdk_ic_get_events (ic); - attr->filter_events = pattr->filter_events; - } - if (mask & GDK_IC_SPOT_LOCATION) - { - XPoint point; - XVaNestedList *list; - - list = XVaCreateNestedList (0, XNSpotLocation, &point, NULL); - if (XGetICValues (private->xic, XNPreeditAttributes, list, NULL)) - unknown &= ~GDK_IC_SPOT_LOCATION; - else - { - pattr->spot_location.x = point.x; - pattr->spot_location.y = point.y; - private->mask |= GDK_IC_SPOT_LOCATION; - - attr->spot_location = pattr->spot_location; - } - XFree (list); - } - if (unknown & GDK_IC_PREEDIT_AREA_NEEDED) - { - XRectangle rect; - XVaNestedList *list; - - list = XVaCreateNestedList (0, XNAreaNeeded, &rect, NULL); - if (XGetICValues (private->xic, XNPreeditAttributes, list, NULL)) - unknown &= ~GDK_IC_PREEDIT_AREA_NEEDED; - else - { - pattr->preedit_area_needed.x = rect.x; - pattr->preedit_area_needed.y = rect.y; - pattr->preedit_area_needed.width = rect.width; - pattr->preedit_area_needed.height = rect.height; - private->mask |= GDK_IC_PREEDIT_AREA_NEEDED; - - attr->preedit_area = pattr->preedit_area; - } - XFree (list); - } - if (unknown & GDK_IC_STATUS_AREA_NEEDED) - { - XRectangle rect; - XVaNestedList *list; - - list = XVaCreateNestedList (0, XNAreaNeeded, &rect, NULL); - if (XGetICValues (private->xic, XNStatusAttributes, list, NULL)) - unknown &= ~GDK_IC_STATUS_AREA_NEEDED; - else - { - pattr->status_area_needed.x = rect.x; - pattr->status_area_needed.y = rect.y; - pattr->status_area_needed.width = rect.width; - pattr->status_area_needed.height = rect.height; - private->mask |= GDK_IC_STATUS_AREA_NEEDED; - - attr->status_area = pattr->status_area; - } - XFree (list); - } - } - - return mask & ~known & ~unknown; -} - -GdkEventMask -gdk_ic_get_events (GdkIC *ic) -{ - GdkEventMask mask; - glong xmask; - glong bit; - GdkICPrivate *private; - gint i; - - /* From gdkwindow.c */ - - g_return_val_if_fail (ic != NULL, 0); - - private = (GdkICPrivate *) ic; - - if (private->mask & GDK_IC_FILTER_EVENTS) - return private->attr->filter_events; - - if (XGetICValues (private->xic, XNFilterEvents, &xmask, NULL) != NULL) - { - GDK_NOTE (XIM, g_warning ("Call to XGetICValues: %s failed", XNFilterEvents)); - return 0; - } - - mask = 0; - for (i=0, bit=2; i < gdk_nevent_masks; i++, bit <<= 1) - if (xmask & gdk_event_mask_table [i]) - { - mask |= bit; - xmask &= ~ gdk_event_mask_table [i]; - } - - if (xmask) - g_warning ("ic requires events not supported by the application (%#04lx)", xmask); - - private->attr->filter_events = mask; - private->mask |= GDK_IC_FILTER_EVENTS; - - return mask; -} - -void -gdk_ic_cleanup (void) -{ - gint destroyed; - - destroyed = 0; - while (xim_ic_list != NULL) - { - gdk_ic_destroy ((GdkIC *) xim_ic_list->data); - destroyed ++; - } -#ifdef G_ENABLE_DEBUG - if ((gdk_debug_flags & GDK_DEBUG_XIM) && destroyed > 0) - { - g_warning ("Cleaned up %i IC(s)\n", destroyed); - } -#endif /* G_ENABLE_DEBUG */ -} - -#else /* !USE_XIM */ - -void -gdk_im_begin (GdkIC *ic, GdkWindow* window) -{ -} - -void -gdk_im_end (void) -{ -} - -GdkIMStyle -gdk_im_decide_style (GdkIMStyle supported_style) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -GdkIMStyle -gdk_im_set_best_style (GdkIMStyle style) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -gint -gdk_im_ready (void) -{ - return FALSE; -} - -GdkIC * -gdk_ic_new (GdkICAttr *attr, GdkICAttributesType mask) -{ - return NULL; -} - -void -gdk_ic_destroy (GdkIC *ic) -{ -} - -GdkIMStyle -gdk_ic_get_style (GdkIC *ic) -{ - return GDK_IM_PREEDIT_NONE | GDK_IM_STATUS_NONE; -} - -void -gdk_ic_set_values (GdkIC *ic, ...) -{ -} - -void -gdk_ic_get_values (GdkIC *ic, ...) -{ -} - -GdkICAttributesType -gdk_ic_set_attr (GdkIC *ic, GdkICAttr *attr, GdkICAttributesType mask) -{ - return 0; -} - -GdkICAttributesType -gdk_ic_get_attr (GdkIC *ic, GdkICAttr *attr, GdkICAttributesType mask) -{ - return 0; -} - -GdkEventMask -gdk_ic_get_events (GdkIC *ic) -{ - return 0; -} - -#endif /* USE_XIM */ - /* * gdk_wcstombs * diff --git a/gdk/x11/gdkmain-x11.c b/gdk/x11/gdkmain-x11.c index 76a1ab1915..c6321e1b86 100644 --- a/gdk/x11/gdkmain-x11.c +++ b/gdk/x11/gdkmain-x11.c @@ -110,34 +110,6 @@ static const int gdk_ndebug_keys = sizeof(gdk_debug_keys)/sizeof(GDebugKey); #endif /* G_ENABLE_DEBUG */ -static void -gdk_arg_xim_preedit_cb (const gchar *arg, const gchar *value, gpointer cb_data) -{ - if (strcmp ("none", value) == 0) - gdk_im_set_best_style (GDK_IM_PREEDIT_NONE); - else if (strcmp ("nothing", value) == 0) - gdk_im_set_best_style (GDK_IM_PREEDIT_NOTHING); - else if (strcmp ("area", value) == 0) - gdk_im_set_best_style (GDK_IM_PREEDIT_AREA); - else if (strcmp ("position", value) == 0) - gdk_im_set_best_style (GDK_IM_PREEDIT_POSITION); - else if (strcmp ("callbacks", value) == 0) - gdk_im_set_best_style (GDK_IM_PREEDIT_CALLBACKS); -} - -static void -gdk_arg_xim_status_cb (const gchar *arg, const gchar *value, gpointer cb_data) -{ - if (strcmp ("none", value) == 0) - gdk_im_set_best_style (GDK_IM_STATUS_NONE); - else if (strcmp ("nothing", value) == 0) - gdk_im_set_best_style (GDK_IM_STATUS_NOTHING); - else if (strcmp ("area", value) == 0) - gdk_im_set_best_style (GDK_IM_STATUS_AREA); - else if (strcmp ("callbacks", value) == 0) - gdk_im_set_best_style (GDK_IM_STATUS_CALLBACKS); -} - GdkArgDesc _gdk_windowing_args[] = { { "display", GDK_ARG_STRING, &gdk_display_name, (GdkArgFunc)NULL }, { "sync", GDK_ARG_BOOL, &gdk_synchronize, (GdkArgFunc)NULL }, @@ -145,8 +117,6 @@ GdkArgDesc _gdk_windowing_args[] = { { "class", GDK_ARG_STRING, &gdk_progclass, (GdkArgFunc)NULL }, { "gxid-host", GDK_ARG_STRING, &gdk_input_gxid_host, (GdkArgFunc)NULL }, { "gxid-port", GDK_ARG_INT, &gdk_input_gxid_port, (GdkArgFunc)NULL }, - { "xim-preedit", GDK_ARG_CALLBACK, NULL, gdk_arg_xim_preedit_cb }, - { "xim-status", GDK_ARG_CALLBACK, NULL, gdk_arg_xim_status_cb }, { NULL } }; diff --git a/gdk/x11/gdkprivate-x11.h b/gdk/x11/gdkprivate-x11.h index 24f7075c40..f864a6b0a5 100644 --- a/gdk/x11/gdkprivate-x11.h +++ b/gdk/x11/gdkprivate-x11.h @@ -106,16 +106,12 @@ extern GdkWindowObject *gdk_xgrab_window; /* Window that currently holds the * x pointer grab */ -#ifdef USE_XIM -extern GdkICPrivate *gdk_xim_ic; /* currently using IC */ -extern GdkWindow *gdk_xim_window; /* currently using Window */ -#endif /* USE_XIM */ - /* Used to detect not-up-to-date keymap */ extern guint _gdk_keymap_serial; #ifdef HAVE_XKB extern gboolean _gdk_use_xkb; +extern gboolean _gdk_have_xkb_autorepeat; #endif /* Whether we were able to turn on detectable-autorepeat using diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h index acb6202675..ab54d4e758 100644 --- a/gdk/x11/gdkx.h +++ b/gdk/x11/gdkx.h @@ -42,10 +42,6 @@ typedef struct _GdkFontPrivateX GdkFontPrivateX; typedef struct _GdkImagePrivateX11 GdkImagePrivateX11; typedef struct _GdkVisualPrivate GdkVisualPrivate; -#ifdef USE_XIM -typedef struct _GdkICPrivate GdkICPrivate; -#endif /* USE_XIM */ - struct _GdkCursorPrivate { GdkCursor cursor; @@ -89,18 +85,6 @@ struct _GdkImagePrivateX11 }; -#ifdef USE_XIM - -struct _GdkICPrivate -{ - XIC xic; - GdkICAttr *attr; - GdkICAttributesType mask; -}; - -#endif /* USE_XIM */ - - typedef struct _GdkGCX11 GdkGCX11; typedef struct _GdkGCX11Class GdkGCX11Class; diff --git a/gtk/gtkoldeditable.c b/gtk/gtkoldeditable.c index 6a0c8a0f29..c28dbc6362 100644 --- a/gtk/gtkoldeditable.c +++ b/gtk/gtkoldeditable.c @@ -433,10 +433,6 @@ gtk_old_editable_init (GtkOldEditable *old_editable) old_editable->visible = 1; old_editable->clipboard_text = NULL; -#ifdef USE_XIM - old_editable->ic = NULL; -#endif - gtk_selection_add_targets (GTK_WIDGET (old_editable), GDK_SELECTION_PRIMARY, targets, G_N_ELEMENTS (targets)); } diff --git a/gtk/gtkoldeditable.h b/gtk/gtkoldeditable.h index 702332331e..896f1d8ec2 100644 --- a/gtk/gtkoldeditable.h +++ b/gtk/gtkoldeditable.h @@ -66,8 +66,6 @@ struct _GtkOldEditable /*< private >*/ guint editable : 1; guint visible : 1; - GdkIC *ic; - GdkICAttr *ic_attr; gchar *clipboard_text; }; diff --git a/gtk/gtktext.c b/gtk/gtktext.c index eba3960fc2..9a9829b45e 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -1342,71 +1342,6 @@ gtk_text_realize (GtkWidget *widget) gdk_gc_set_exposures (text->gc, TRUE); gdk_gc_set_foreground (text->gc, &widget->style->text[GTK_STATE_NORMAL]); -#ifdef USE_XIM - if (gdk_im_ready () && (old_editable->ic_attr = gdk_ic_attr_new ()) != NULL) - { - gint width, height; - GdkColormap *colormap; - GdkEventMask mask; - GdkICAttr *attr = old_editable->ic_attr; - GdkICAttributesType attrmask = GDK_IC_ALL_REQ; - GdkIMStyle style; - GdkIMStyle supported_style = 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 &= ~GDK_IM_PREEDIT_POSITION; - - attr->style = style = gdk_im_decide_style (supported_style); - attr->client_window = text->text_area; - - if ((colormap = gtk_widget_get_colormap (widget)) != - gtk_widget_get_default_colormap ()) - { - attrmask |= GDK_IC_PREEDIT_COLORMAP; - attr->preedit_colormap = colormap; - } - - 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; - } - - attrmask |= GDK_IC_PREEDIT_POSITION_REQ; - gdk_window_get_size (text->text_area, &width, &height); - 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; - } - old_editable->ic = gdk_ic_new (attr, attrmask); - - if (old_editable->ic == NULL) - g_warning ("Can't create input context."); - else - { - mask = gdk_window_get_events (text->text_area); - mask |= gdk_ic_get_events (old_editable->ic); - gdk_window_set_events (text->text_area, mask); - - if (GTK_WIDGET_HAS_FOCUS (widget)) - gdk_im_begin (old_editable->ic, text->text_area); - } - } -#endif - realize_properties (text); gdk_window_show (text->text_area); init_properties (text); @@ -1468,19 +1403,6 @@ gtk_text_unrealize (GtkWidget *widget) text = GTK_TEXT (widget); -#ifdef USE_XIM - if (GTK_OLD_EDITABLE (widget)->ic) - { - gdk_ic_destroy (GTK_OLD_EDITABLE (widget)->ic); - GTK_OLD_EDITABLE (widget)->ic = NULL; - } - if (GTK_OLD_EDITABLE (widget)->ic_attr) - { - gdk_ic_attr_destroy (GTK_OLD_EDITABLE (widget)->ic_attr); - GTK_OLD_EDITABLE (widget)->ic_attr = NULL; - } -#endif - gdk_window_set_user_data (text->text_area, NULL); gdk_window_destroy (text->text_area); text->text_area = NULL; @@ -1662,20 +1584,6 @@ gtk_text_size_allocate (GtkWidget *widget, MAX (1, (gint)widget->allocation.height - (gint)(widget->style->ythickness + (gint)TEXT_BORDER_ROOM) * 2)); -#ifdef USE_XIM - if (old_editable->ic && (gdk_ic_get_style (old_editable->ic) & GDK_IM_PREEDIT_POSITION)) - { - gint width, height; - - gdk_window_get_size (text->text_area, &width, &height); - old_editable->ic_attr->preedit_area.width = width; - old_editable->ic_attr->preedit_area.height = height; - - gdk_ic_set_attr (old_editable->ic, - old_editable->ic_attr, GDK_IC_PREEDIT_AREA); - } -#endif - recompute_geometry (text); } } @@ -2232,11 +2140,6 @@ gtk_text_focus_in (GtkWidget *widget, TDEBUG (("in gtk_text_focus_in\n")); -#ifdef USE_XIM - if (GTK_OLD_EDITABLE (widget)->ic) - gdk_im_begin (GTK_OLD_EDITABLE (widget)->ic, GTK_TEXT(widget)->text_area); -#endif - return (* GTK_WIDGET_CLASS (parent_class)->focus_in_event) (widget, event); } @@ -2250,10 +2153,6 @@ gtk_text_focus_out (GtkWidget *widget, TDEBUG (("in gtk_text_focus_out\n")); -#ifdef USE_XIM - gdk_im_end (); -#endif - return (* GTK_WIDGET_CLASS (parent_class)->focus_out_event) (widget, event); } @@ -3742,30 +3641,6 @@ find_cursor_at_line (GtkText* text, const LineParams* start_line, gint pixel_hei text->cursor_char = 0; else text->cursor_char = ch; - -#ifdef USE_XIM - if (GTK_WIDGET_HAS_FOCUS(text) && gdk_im_ready() && old_editable->ic && - (gdk_ic_get_style (old_editable->ic) & GDK_IM_PREEDIT_POSITION)) - { - GdkICAttributesType mask = GDK_IC_SPOT_LOCATION | - GDK_IC_PREEDIT_FOREGROUND | - GDK_IC_PREEDIT_BACKGROUND; - - old_editable->ic_attr->spot_location.x = text->cursor_pos_x; - old_editable->ic_attr->spot_location.y - = text->cursor_pos_y - text->cursor_char_offset; - old_editable->ic_attr->preedit_foreground = *MARK_CURRENT_FORE (text, &mark); - old_editable->ic_attr->preedit_background = *MARK_CURRENT_BACK (text, &mark); - - if (MARK_CURRENT_FONT (text, &mark)->type == GDK_FONT_FONTSET) - { - mask |= GDK_IC_PREEDIT_FONTSET; - old_editable->ic_attr->preedit_fontset = MARK_CURRENT_FONT (text, &mark); - } - - gdk_ic_set_attr (old_editable->ic, old_editable->ic_attr, mask); - } -#endif } static void |