summaryrefslogtreecommitdiffstats
path: root/generic/tkEvent.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-02-05 19:29:42 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-02-05 19:29:42 (GMT)
commit334a0cab800af743b3db1b6da0023918dfa89790 (patch)
tree58a8c6cedf1ca94af9229a8a2ac2783c1d26cb9e /generic/tkEvent.c
parente00820e69f4c9fe0fb91691c104ced37840a140d (diff)
parent6130ca3ef131a8459a378ee9e3fa67484d6fe178 (diff)
downloadtk-334a0cab800af743b3db1b6da0023918dfa89790.zip
tk-334a0cab800af743b3db1b6da0023918dfa89790.tar.gz
tk-334a0cab800af743b3db1b6da0023918dfa89790.tar.bz2
Fix [7d967c68]: Tk application fault when ibud-daemon IME is restarted
Diffstat (limited to 'generic/tkEvent.c')
-rw-r--r--generic/tkEvent.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/generic/tkEvent.c b/generic/tkEvent.c
index 95aeda1..d058e7c 100644
--- a/generic/tkEvent.c
+++ b/generic/tkEvent.c
@@ -356,6 +356,7 @@ CreateXIC(
/* XCreateIC failed. */
return;
}
+ winPtr->ximGeneration = dispPtr->ximGeneration;
/*
* Adjust the window's event mask if the IM requires it.
@@ -1288,6 +1289,14 @@ Tk_HandleEvent(
*/
#ifdef TK_USE_INPUT_METHODS
+ /*
+ * If the XIC has been invalidated, it must be recreated.
+ */
+ if (winPtr->dispPtr->ximGeneration != winPtr->ximGeneration) {
+ winPtr->flags &= ~TK_CHECKED_IC;
+ winPtr->inputContext = NULL;
+ }
+
if ((winPtr->dispPtr->flags & TK_DISPLAY_USE_IM)) {
if (!(winPtr->flags & (TK_CHECKED_IC|TK_ALREADY_DEAD))) {
winPtr->flags |= TK_CHECKED_IC;
@@ -1295,7 +1304,9 @@ Tk_HandleEvent(
CreateXIC(winPtr);
}
}
- if (eventPtr->type == FocusIn && winPtr->inputContext != NULL) {
+ if ((eventPtr->type == FocusIn) &&
+ (winPtr->dispPtr->inputMethod != NULL) &&
+ (winPtr->inputContext != NULL)) {
XSetICFocus(winPtr->inputContext);
}
}