From 0c5eaf7b819ccba0d37acb9cc37b66434860acff Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 21 Jul 2004 03:10:05 +0000 Subject: * generic/tkEvent.c (InvokeInputMethods): ensure IC focus is set after creation. [Bug #905830] --- ChangeLog | 5 +++++ generic/tkEvent.c | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e3e90fa..4167ff3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-07-20 Jeff Hobbs + + * generic/tkEvent.c (InvokeInputMethods): ensure IC focus is set + after creation. [Bug #905830] + 2004-07-20 Daniel Steffen * macosx/Makefile: added support to tk framework build to diff --git a/generic/tkEvent.c b/generic/tkEvent.c index cd0daaf..b90b3fd 100644 --- a/generic/tkEvent.c +++ b/generic/tkEvent.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkEvent.c,v 1.22 2004/07/05 22:27:12 georgeps Exp $ + * RCS: @(#) $Id: tkEvent.c,v 1.23 2004/07/21 03:10:06 hobbs Exp $ */ #include "tkPort.h" @@ -409,6 +409,7 @@ InvokeInputMethods(winPtr,eventPtr) TkDisplay *dispPtr = winPtr->dispPtr; if ((dispPtr->flags & TK_DISPLAY_USE_IM)) { if (!(winPtr->flags & (TK_CHECKED_IC|TK_ALREADY_DEAD))) { + long im_event_mask = 0L; winPtr->flags |= TK_CHECKED_IC; if (dispPtr->inputMethod != NULL) { #if TK_XIM_SPOT @@ -424,6 +425,15 @@ InvokeInputMethods(winPtr,eventPtr) NULL); #endif } + if (winPtr->inputContext != NULL) { + XGetICValues(winPtr->inputContext, + XNFilterEvents, &im_event_mask, NULL); + if (im_event_mask != 0L) { + XSelectInput(winPtr->display, winPtr->window, + winPtr->atts.event_mask | im_event_mask); + XSetICFocus(winPtr->inputContext); + } + } } if (XFilterEvent(eventPtr, None)) { return 1; -- cgit v0.12