summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xfns.c10
2 files changed, 15 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1cce3b5c48e..e468197c968 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,10 @@
2014-03-23 Daniel Colascione <dancol@dancol.org>
+ * xfns.c (create_frame_xic): If XCreateIC fails, try again without
+ XNStatusAttributes; works around flaky XIM modules, apparently.
+
+2014-03-23 Daniel Colascione <dancol@dancol.org>
+
* term.c (init_tty): Rearrange condition for clarity; print
appropriate diagnostic.
diff --git a/src/xfns.c b/src/xfns.c
index 5dbc7053fd9..de92baa3ce6 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -2021,6 +2021,16 @@ create_frame_xic (struct frame *f)
XNStatusAttributes, status_attr,
XNPreeditAttributes, preedit_attr,
NULL);
+
+ /* Some input methods don't support a status pixel. */
+ if (xic == NULL)
+ xic = XCreateIC (xim,
+ XNInputStyle, xic_style,
+ XNClientWindow, FRAME_X_WINDOW (f),
+ XNFocusWindow, FRAME_X_WINDOW (f),
+ XNPreeditAttributes, preedit_attr,
+ NULL);
+
XFree (preedit_attr);
XFree (status_attr);
}