summaryrefslogtreecommitdiffstats
path: root/generic/tkWindow.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-02-05 19:30:58 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-02-05 19:30:58 (GMT)
commitec742a6bfebae051f4d9b1a9651b3674edf1174a (patch)
tree741633e60ba06ed11d6a7ccc54a9da3923ea97cf /generic/tkWindow.c
parent4b01427e67e70e07876c9f56bed7ad10d3fda660 (diff)
parent334a0cab800af743b3db1b6da0023918dfa89790 (diff)
downloadtk-ec742a6bfebae051f4d9b1a9651b3674edf1174a.zip
tk-ec742a6bfebae051f4d9b1a9651b3674edf1174a.tar.gz
tk-ec742a6bfebae051f4d9b1a9651b3674edf1174a.tar.bz2
Fix [7d967c68]: Tk application fault when ibud-daemon IME is restarted
Diffstat (limited to 'generic/tkWindow.c')
-rw-r--r--generic/tkWindow.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/generic/tkWindow.c b/generic/tkWindow.c
index 3b3b025..9a31365 100644
--- a/generic/tkWindow.c
+++ b/generic/tkWindow.c
@@ -355,6 +355,9 @@ CreateTopLevelWindow(
* Set the flags specified in the call.
*/
+#ifdef TK_USE_INPUT_METHODS
+ winPtr->ximGeneration = 0;
+#endif /*TK_USE_INPUT_METHODS*/
winPtr->flags |= flags;
/*
@@ -472,6 +475,9 @@ GetScreen(
dispPtr->cursorFont = None;
dispPtr->warpWindow = NULL;
dispPtr->multipleAtom = None;
+#ifdef TK_USE_INPUT_METHODS
+ dispPtr->ximGeneration = 0;
+#endif /*TK_USE_INPUT_METHODS*/
/*
* By default we do want to collapse motion events in
@@ -1442,10 +1448,11 @@ Tk_DestroyWindow(
UnlinkWindow(winPtr);
TkEventDeadWindow(winPtr);
#ifdef TK_USE_INPUT_METHODS
- if (winPtr->inputContext != NULL) {
+ if (winPtr->inputContext != NULL &&
+ winPtr->ximGeneration == winPtr->dispPtr->ximGeneration) {
XDestroyIC(winPtr->inputContext);
- winPtr->inputContext = NULL;
}
+ winPtr->inputContext = NULL;
#endif /* TK_USE_INPUT_METHODS */
if (winPtr->tagPtr != NULL) {
TkFreeBindingTags(winPtr);