diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-02-05 19:29:42 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-02-05 19:29:42 (GMT) |
commit | 334a0cab800af743b3db1b6da0023918dfa89790 (patch) | |
tree | 58a8c6cedf1ca94af9229a8a2ac2783c1d26cb9e /generic/tkWindow.c | |
parent | e00820e69f4c9fe0fb91691c104ced37840a140d (diff) | |
parent | 6130ca3ef131a8459a378ee9e3fa67484d6fe178 (diff) | |
download | tk-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/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 20b4f20..e4d696b 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); |