From 16e2616552f5fc57dd669f4875e476fd9656e498 Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 20 May 2010 22:48:13 +0000 Subject: * win/tkWinX.c (HandleIMEComposition): [Bug 2992129]: Ensure that all places that generate key events zero them out first; Tk relies on that being true for the generic parts of the fix for Bug 1924761. --- ChangeLog | 51 ++++++++++++++++++++++++++++----------------------- win/tkWinX.c | 6 +++++- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index e72b7b7..c39b897 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,42 +1,47 @@ +2010-05-20 Donal K. Fellows + + * win/tkWinX.c (HandleIMEComposition): [Bug 2992129]: Ensure that all + places that generate key events zero them out first; Tk relies on that + being true for the generic parts of the fix for Bug 1924761. + 2010-05-17 Jan Nijtmans - * win/tkWinDialog.c: Fix [Bug #3002230]: tk_chooseDirectory returns + * win/tkWinDialog.c: Fix [Bug 3002230]: tk_chooseDirectory returns garbage on cancel 2010-05-17 Joe English - * generic/tkBind.c: Revert [Patch #2999920], as it entails an - incompatible change to the C API is and is the cause of - [Bug #3002768]. + * generic/tkBind.c: Revert [Patch 2999920], as it entails an + incompatible change to the C API is and is the cause of [Bug 3002768]. 2010-05-17 Jan Nijtmans - * generic/tkBind.c [Patch #2999920]: Optimize Internal Virtual event - string operations - * win/tkWinDialog.c [Bug #2987995]: Tk_getOpenFile returns garbage under - described circumstances + * generic/tkBind.c: [Patch 2999920]: Optimize Internal Virtual event + string operations. + * win/tkWinDialog.c: [Bug 2987995]: Tk_getOpenFile returns garbage + under described circumstances 2010-05-11 Jan Nijtmans - * doc/RestrictEv.3 Consistent use of variable names in RestrictEvent - * generic/tkGrab.c API documentation and implementation: Use 'prev' - * unix/tkUnixDraw.c in stead of 'old', and 'arg' in stead of - * unix/tkUnixSend.c 'clientData' everywhere, just as in tkEvent.c. + * doc/RestrictEv.3: Consistent use of variable names in RestrictEvent + * generic/tkGrab.c: API documentation and implementation: Use 'prev' + * unix/tkUnixDraw.c: instead of 'old', and 'arg' instead of + * unix/tkUnixSend.c: 'clientData' everywhere, just as in tkEvent.c. * unix/tkUnixWm.c 2010-05-10 Jan Nijtmans - * doc/BindTable.3 Bring in line with actual implementation. - * generic/tk.decls Change Tk_CreateBinding param name, as in doc - * generic/tkInt.decls CONSTify TkCopyAndGlobalEval, TkpSetMainMenubar, - * generic/tkBind.c TkpMenuNotifyToplevelCreate, and TkSetWindowMenuBar - * generic/tkMenu.c - * generic/tkDecls.h (regenerated) - * generic/tkIntDecls.h (regenerated) - * carbon/tkMacOSXMenu.c - * macosx/tkMacOSXMenu.c - * unix/tkUnixMenu.c - * win/tkWinMenu.c + * doc/BindTable.3: Bring in line with actual implementation. + * generic/tk.decls: Change Tk_CreateBinding param name, as in doc + * generic/tkInt.decls: CONSTify TkCopyAndGlobalEval, + * generic/tkBind.c: TkpSetMainMenubar, TkpMenuNotifyToplevelCreate, + * generic/tkMenu.c: and TkSetWindowMenuBar + * generic/tkDecls.h: (regenerated) + * generic/tkIntDecls.h: (regenerated) + * carbon/tkMacOSXMenu.c: + * macosx/tkMacOSXMenu.c: + * unix/tkUnixMenu.c: + * win/tkWinMenu.c: 2010-05-03 Don Porter diff --git a/win/tkWinX.c b/win/tkWinX.c index a0f69ab..75752fe 100644 --- a/win/tkWinX.c +++ b/win/tkWinX.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinX.c,v 1.64 2010/04/29 15:28:04 nijtmans Exp $ + * RCS: @(#) $Id: tkWinX.c,v 1.65 2010/05/20 22:48:13 dkf Exp $ */ /* @@ -1632,10 +1632,14 @@ HandleIMEComposition( * We set send_event to the special value of -2, so that TkpGetString * in tkWinKey.c knows that trans_chars[] already contains a UNICODE * char and there's no need to do encoding conversion. + * + * Note that the event *must* be zeroed out first; Tk plays cunning + * games with the overalls structure. [Bug 2992129] */ winPtr = (TkWindow *) Tk_HWNDToWindow(hwnd); + memset(&event, 0, sizeof(XEvent)); event.xkey.serial = winPtr->display->request++; event.xkey.send_event = -2; event.xkey.display = winPtr->display; -- cgit v0.12