summaryrefslogtreecommitdiff
path: root/src/xterm.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-10-17 17:12:20 +0000
committerRichard M. Stallman <rms@gnu.org>1995-10-17 17:12:20 +0000
commitb1e785eee5d1ca6380c64166734751ef33a6a4c2 (patch)
tree54b6ab36dc7b97e21f3f2a631a0f1422500d5558 /src/xterm.c
parent85dd2fd4ca6e5de94a54fa0df3c42a5b093ce9e3 (diff)
downloademacs-b1e785eee5d1ca6380c64166734751ef33a6a4c2.tar.gz
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Diffstat (limited to 'src/xterm.c')
-rw-r--r--src/xterm.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 0908153ea1b..57e21af6bc3 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -3265,6 +3265,9 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
int prefix;
Lisp_Object part;
struct x_display_info *dpyinfo;
+#ifdef HAVE_X_I18N
+ Status status_return;
+#endif
if (interrupt_input_blocked)
{
@@ -3339,6 +3342,11 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
/* Since we set WM_TAKE_FOCUS, we must call
XSetInputFocus explicitly. But not if f is null,
since that might be an event for a deleted frame. */
+#ifdef HAVE_X_I18N
+ /* Not quite sure this is needed -pd */
+ if (f)
+ XSetICFocus (FRAME_XIC (f));
+#endif
if (f)
XSetInputFocus (event.xclient.display,
event.xclient.window,
@@ -3645,8 +3653,25 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
| dpyinfo->hyper_mod_mask
| dpyinfo->alt_mod_mask);
+#ifdef HAVE_X_I18N
+ if (FRAME_XIC (f))
+ {
+ /* The necessity of the following line took me
+ a full work-day to decipher from the docs!! */
+ if (XFilterEvent (&event, None))
+ break;
+ nbytes = XmbLookupString (FRAME_XIC (f),
+ &event.xkey, copy_buffer,
+ 80, &keysym,
+ &status_return);
+ }
+ else
+ nbytes = XLookupString (&event.xkey, copy_buffer,
+ 80, &keysym, &compose_status);
+#else
nbytes = XLookupString (&event.xkey, copy_buffer,
80, &keysym, &compose_status);
+#endif
orig_keysym = keysym;
@@ -3800,6 +3825,11 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
if (f)
x_new_focus_frame (dpyinfo, f);
+#ifdef HAVE_X_I18N
+ if (f && FRAME_XIC (f))
+ XSetICFocus (FRAME_XIC (f));
+#endif
+
#ifdef USE_X_TOOLKIT
goto OTHER;
#endif /* USE_X_TOOLKIT */
@@ -3838,6 +3868,11 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
if (f && f == dpyinfo->x_focus_frame)
x_new_focus_frame (dpyinfo, 0);
+#ifdef HAVE_X_I18N
+ if (f && FRAME_XIC (f))
+ XUnsetICFocus (FRAME_XIC (f));
+#endif
+
#ifdef USE_X_TOOLKIT
goto OTHER;
#endif /* USE_X_TOOLKIT */
@@ -5818,6 +5853,10 @@ x_term_init (display_name, xrm_option, resource_name)
x_initialized = 1;
}
+#ifdef HAVE_X_I18N
+ setlocale (LC_ALL, NULL);
+#endif
+
#ifdef USE_X_TOOLKIT
/* weiner@footloose.sps.mot.com reports that this causes
errors with X11R5: