summaryrefslogtreecommitdiffstats
path: root/source/t/xfig/xfig.3.2.3d-xim.diff
blob: 918d00d9f51e79d09fbfa56f420070ee94e4778e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
--- xfig.3.2.3d/d_text.c
+++ xfig.3.2.3d/d_text.c
@@ -1485,6 +1485,7 @@
   int i;
   XVaNestedList preedit_att, status_att;
   XPoint spot;
+  char *modifier_list;
 
   preferred_style = style_notuseful;
   if (strncasecmp(appres.xim_input_style, "OverTheSpot", 3) == 0)
@@ -1501,6 +1502,10 @@
   if (preferred_style == style_notuseful) return;
 
   if (appres.DEBUG) fprintf(stderr, "initialize_input_method()...\n");
+  
+  if((modifier_list = XSetLocaleModifiers("")) == NULL) {
+	  /* printf("Warning: XSetLocaleModifiers() failed.\n"); */
+  }
 
   xim_im = XOpenIM(XtDisplay(w), NULL, NULL, NULL);
   if (xim_im == NULL) {
@@ -1517,7 +1522,10 @@
       if (xim_style == 0) xim_style = style_root;
     }
   }
-  if (xim_style != preferred_style) {
+  if (xim_style != preferred_style
+      && *modifier_list != '\0'
+      && ! strstr(modifier_list,"@im=local")
+      && ! strstr(modifier_list,"@im=none")) {
     fprintf(stderr, "xfig: this input-method doesn't support %s input style\n",
 	    appres.xim_input_style);
     if (xim_style == 0) {