diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-02-05 19:30:58 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-02-05 19:30:58 (GMT) |
commit | ec742a6bfebae051f4d9b1a9651b3674edf1174a (patch) | |
tree | 741633e60ba06ed11d6a7ccc54a9da3923ea97cf /generic/tkWindow.c | |
parent | 4b01427e67e70e07876c9f56bed7ad10d3fda660 (diff) | |
parent | 334a0cab800af743b3db1b6da0023918dfa89790 (diff) | |
download | tk-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.c | 11 |
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); |