From unknown Fri Aug 15 16:01:07 2025 X-Loop: owner@emacsbugs.donarmstrong.com Subject: bug#2569: Emacs-CVS Win32 MS-IME will lost some input Reply-To: Yao , 2569-quiet@debbugs.gnu.org Resent-From: Yao Resent-To: Resent-Date: Wed, 04 Mar 2009 13:35:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-Emacs-PR-Message: report 2569 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Received: via spool by quiet@emacsbugs.donarmstrong.com id=Q.123617335524105 (code Q ref -1); Wed, 04 Mar 2009 13:35:03 +0000 Received: (at quiet) by emacsbugs.donarmstrong.com; 4 Mar 2009 13:29:15 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=0.1 required=4.0 tests=FOURLA,MURPHY_DRUGS_REL8 autolearn=no version=3.2.5-bugs.debian.org_2005_01_02 Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.186]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n24DTAvg024099 for ; Wed, 4 Mar 2009 05:29:12 -0800 Received: by ti-out-0910.google.com with SMTP id 28so3405250tif.1 for ; Wed, 04 Mar 2009 05:29:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:resent-from:resent-to :resent-date:resent-message-id:resent-user-agent:x-original-to :received:received:received:x-sieve:received:received:received :received:x-trace:x-sbrs:received:received:received :x-spam-checker-version:x-spam-level:x-spam-status:received:received :path:from:newsgroups:date:organization:message-id:nntp-posting-host :mime-version:content-type:content-transfer-encoding:x-trace :x-complaints-to:nntp-posting-date:complaints-to:injection-info :user-agent:x-http-useragent:xref:to:x-mailman-approved-at:subject :x-beenthere:x-mailman-version:precedence:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:errors-to :x-detected-operating-system:x-f2s-spam-score; bh=xqp69GfMcAtHUTxxVJMuKDQ8PeLUayv2hZzm3jPFxUM=; b=lfzxJtLMhDyVXnBe7vCOFzo+/BsX7B2XtSLY6a8EwNmt4Dh/j6cUxWYZY+uxi2CnFh ZRvYENHEZGDCUQLuXH/quhBgIW90TVNFv0OIqCfZsB/1zRPml3Pneu5SIrtflnWw+pm9 /FR8U+4g/pPA9DIU2Xx/o3hWIfm9d3LY0oz5Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=resent-from:resent-to:resent-date:resent-message-id :resent-user-agent:x-original-to:x-sieve:x-trace:x-sbrs :x-spam-checker-version:x-spam-level:x-spam-status:path:from :newsgroups:date:organization:message-id:nntp-posting-host :mime-version:content-type:content-transfer-encoding:x-complaints-to :nntp-posting-date:complaints-to:injection-info:user-agent :x-http-useragent:xref:to:x-mailman-approved-at:subject:x-beenthere :x-mailman-version:precedence:list-id:list-unsubscribe:list-archive :list-post:list-help:list-subscribe:errors-to :x-detected-operating-system:x-f2s-spam-score; b=fGZiDRlsGu7iUNH1T4FdAaZWwZhPiXV1zf4AcjsnL7q6kY9u3ZoUJC7hPKcSi3Pzjb bqlbOdQNGgG/Wc1ZtAjx19iAuavzPNc0NcWK6p5Q0fAYe9ez/hWk1gLD/vaZP0JQDSH1 7pHZt3hWzIuk3BDuvn5c/b6sbrwS+JhhjzUTk= Received: by 10.110.11.4 with SMTP id 4mr10974893tik.47.1236173349239; Wed, 04 Mar 2009 05:29:09 -0800 (PST) Received: from ?192.168.249.26? ([118.100.161.108]) by mx.google.com with ESMTPS id i6sm18150tid.39.2009.03.04.05.29.07 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 04 Mar 2009 05:29:08 -0800 (PST) Resent-From: Jason Rumney Resent-To: quiet@debbugs.gnu.org Resent-Date: Wed, 4 Mar 2009 21:28:41 +0800 Resent-Message-Id: <49AE8209.40101@gnu.org> Resent-User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081209 Lightning/0.9 Thunderbird/2.0.0.19 X-Original-To: jasonr@localhost Received: from wanchan.jasonr.f2s.com (localhost [127.0.0.1]) by wanchan.jasonrumney.net (Postfix) with ESMTP id 848A61D14 for ; Sat, 27 Dec 2008 04:19:00 +0000 (GMT) Received: from imap.freedom2surf.net [195.224.192.52] by wanchan.jasonr.f2s.com with POP3 (fetchmail-6.3.9-rc2) for (single-drop); Sat, 27 Dec 2008 04:19:00 +0000 (GMT) Received: from murder ([unix socket]) by imap2.freedom2surf.net (Cyrus v2.2.12-Invoca-RPM-2.2.12-3.RHEL4.1) with LMTPA; Fri, 14 Nov 2008 06:55:14 +0000 X-Sieve: CMU Sieve 2.2 Received: from avs03.freedom2surf.net (avs03.freedom2surf.net [195.224.224.198]) by imap2.freedom2surf.net (Postfix) with ESMTP id 1B3F7841B99 for ; Fri, 14 Nov 2008 06:55:14 +0000 (GMT) Received: from localhost ([127.0.0.1] helo=avs03.freedom2surf.net) by avs03.freedom2surf.net with esmtp (Exim 4.43) id 1L0sc6-0006QT-Iv for jasonr@f2s.com; Fri, 14 Nov 2008 06:57:06 +0000 Received: from mx1.freedom2surf.net ([194.106.35.236]) by avs03.freedom2surf.net with esmtp (Exim 4.43) id 1L0sc6-0006QQ-Hq for jasonr@f2s.com; Fri, 14 Nov 2008 06:57:06 +0000 Received: from mk-filter-12.mail.uk.tiscali.com ([212.139.137.147]) by mx1.freedom2surf.net with esmtp (Exim 4.67) (envelope-from ) id 1L0saH-0000CM-MN for jasonr@f2s.com; Fri, 14 Nov 2008 06:55:13 +0000 X-Trace: 11117804/mk-filter-12.mail.uk.tiscali.com/IncomingSBRS/$ACCEPTED/UNKNOWNLIST/140.186.70.10/3.3/bug-gnu-emacs-bounces+jasonr=gnu.org@gnu.org X-SBRS: 3.3 Received: from fencepost.gnu.org ([140.186.70.10]) by mk-filter-12.mail.uk.tiscali.com with ESMTP; 14 Nov 2008 06:55:13 +0000 Received: from mail.gnu.org ([199.232.76.166]:53624 helo=mx10.gnu.org) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1L0sZd-0004Az-SB for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:33 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1L0sZc-0002rS-Ui for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:35 -0500 Received: from lists.gnu.org ([199.232.76.165]:41355) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L0sZc-0002rO-PF for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:32 -0500 Received: from localhost ([127.0.0.1]:33143 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L0sZc-0000S8-K6 for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:32 -0500 Path: news.stanford.edu!newsfeed.stanford.edu!postnews.google.com!e38g2000prn.googlegroups.com!not-for-mail From: Yao Newsgroups: gnu.emacs.bug Date: Thu, 13 Nov 2008 22:02:43 -0800 (PST) Organization: http://groups.google.com Message-ID: NNTP-Posting-Host: 58.221.232.98 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: posting.google.com 1226642563 27550 127.0.0.1 (14 Nov 2008 06:02:43 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 14 Nov 2008 06:02:43 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: e38g2000prn.googlegroups.com; posting-host=58.221.232.98; posting-account=XnuqewoAAAA-kh0O59LCzNagxtK8lZPK User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1,gzip(gfe),gzip(gfe) Xref: news.stanford.edu gnu.emacs.bug:49822 To: bug-gnu-emacs@gnu.org X-Mailman-Approved-At: Fri, 14 Nov 2008 01:54:18 -0500 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+jasonr=gnu.org@gnu.org X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-F2S-Spam-Score: 0 Hi I am using japanese input method .If I input continuously I will lost some word. Because Emacs handles WM_IME_CHAR.When first WM_IME_CHAR arrived It read whole string and ignore the other WM_IME_CHAR messages.So it use a ignore_ime_char flag. The flag is reseted after a WM_IME_ENDCOMPOSITION message.I think when I input continuously the IME haven't send some WM_IME_ENDCOMPOSITION message, Because it has not ENDed. And the composition window is not followed the cursor. This is my patch. ------BEGIN----- Index: src/w32fns.c =================================================================== RCS file: /sources/emacs/emacs/src/w32fns.c,v retrieving revision 1.349 diff -U 3 -r1.349 w32fns.c --- src/w32fns.c 30 Oct 2008 01:27:07 -0000 1.349 +++ src/w32fns.c 14 Nov 2008 05:49:34 -0000 @@ -255,6 +255,9 @@ typedef HMONITOR (WINAPI * MonitorFromPoint_Proc) (IN POINT pt, IN DWORD flags); typedef BOOL (WINAPI * GetMonitorInfo_Proc) (IN HMONITOR monitor, OUT struct MONITOR_INFO* info); +typedef HWND (WINAPI * ImmReleaseContext_Proc) (IN HWND hWnd, IN HIMC himc); +typedef HWND (WINAPI * ImmSetCompositionWindow_Proc) + (IN HIMC himc, IN LPCOMPOSITIONFORM compform); TrackMouseEvent_Proc track_mouse_event_fn = NULL; ClipboardSequence_Proc clipboard_sequence_fn = NULL; @@ -262,11 +265,11 @@ ImmGetContext_Proc get_ime_context_fn = NULL; MonitorFromPoint_Proc monitor_from_point_fn = NULL; GetMonitorInfo_Proc get_monitor_info_fn = NULL; +ImmReleaseContext_Proc release_ime_context_fn = NULL; +ImmSetCompositionWindow_Proc set_ime_composition_window_fn = NULL; extern AppendMenuW_Proc unicode_append_menu; -/* Flag to selectively ignore WM_IME_CHAR messages. */ -static int ignore_ime_char = 0; /* W95 mousewheel handler */ unsigned int msh_mousewheel = 0; @@ -3134,15 +3137,14 @@ } break; - case WM_IME_CHAR: + case WM_IME_COMPOSITION: /* If we can't get the IME result as unicode, use default processing, which will at least allow characters decodable in the system locale get through. */ if (!get_composition_string_fn) goto dflt; - - else if (!ignore_ime_char) - { + if (lParam & GCS_RESULTSTR) + { wchar_t * buffer; int size, i; W32Msg wmsg; @@ -3159,14 +3161,47 @@ my_post_msg (&wmsg, hwnd, WM_UNICHAR, (WPARAM) buffer [i], lParam); } - /* We output the whole string above, so ignore following ones - until we are notified of the end of composition. */ - ignore_ime_char = 1; + release_ime_context_fn (hwnd, context); } + else + { + goto dflt; + } break; - + case WM_IME_STARTCOMPOSITION: + if (!set_ime_composition_window_fn) + goto dflt; + HIMC context = get_ime_context_fn (hwnd); + if (!context) + { + break; + } + f = x_window_to_frame (dpyinfo, hwnd); + COMPOSITIONFORM compform; + struct window *w = XWINDOW (FRAME_SELECTED_WINDOW (f)); + compform.dwStyle = CFS_RECT; + compform.ptCurrentPos.x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w- >phys_cursor.x); + + compform.ptCurrentPos.y = WINDOW_TO_FRAME_PIXEL_Y (w, w- >phys_cursor.y); + + compform.rcArea.left = (WINDOW_BOX_LEFT_EDGE_X (w) + + WINDOW_LEFT_MARGIN_WIDTH (w) + + WINDOW_LEFT_FRINGE_WIDTH (w)); + + compform.rcArea.top = (WINDOW_TOP_EDGE_Y (w) + + WINDOW_HEADER_LINE_HEIGHT (w)); + + compform.rcArea.right = (WINDOW_BOX_RIGHT_EDGE_X (w) + - WINDOW_RIGHT_MARGIN_WIDTH (w) + - WINDOW_RIGHT_FRINGE_WIDTH (w)); + + compform.rcArea.bottom = (WINDOW_BOTTOM_EDGE_Y (w) + - WINDOW_MODE_LINE_HEIGHT (w)); + set_ime_composition_window_fn(context, &compform); + release_ime_context_fn (hwnd, context); + + break; case WM_IME_ENDCOMPOSITION: - ignore_ime_char = 0; goto dflt; /* Simulate middle mouse button events when left and right buttons @@ -7258,6 +7293,10 @@ GetProcAddress (imm32_lib, "ImmGetCompositionStringW"); get_ime_context_fn = (ImmGetContext_Proc) GetProcAddress (imm32_lib, "ImmGetContext"); + release_ime_context_fn = (ImmReleaseContext_Proc) + GetProcAddress (imm32_lib, "ImmReleaseContext"); + set_ime_composition_window_fn = (ImmSetCompositionWindow_Proc) + GetProcAddress (imm32_lib, "ImmSetCompositionWindow"); } DEFVAR_INT ("w32-ansi-code-page", &w32_ansi_code_page, Index: src/w32term.c =================================================================== RCS file: /sources/emacs/emacs/src/w32term.c,v retrieving revision 1.309 diff -U 3 -r1.309 w32term.c --- src/w32term.c 12 Nov 2008 15:51:11 -0000 1.309 +++ src/w32term.c 14 Nov 2008 05:53:00 -0000 @@ -33,6 +33,7 @@ #include #include #include +#include #include "charset.h" #include "character.h" @@ -5061,7 +5062,11 @@ { struct frame *f = XFRAME (WINDOW_FRAME (w)); HWND hwnd = FRAME_W32_WINDOW (f); - + if (f == FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame) + { + PostMessage (hwnd, + WM_IME_STARTCOMPOSITION, 0, 0); + } w32_system_caret_x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); w32_system_caret_y ------END-------- From unknown Fri Aug 15 16:01:07 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.420 (Entity 5.420) Content-Type: text/plain; charset=utf-8 X-Loop: owner@emacsbugs.donarmstrong.com From: help-debbugs@gnu.org (Emacs bug Tracking System) To: Yao Subject: bug#2569: Acknowledgement of QUIET report (Emacs-CVS Win32 MS-IME will lost some input) Message-ID: References: X-Emacs-PR-Message: ack-quiet 2569 X-Emacs-PR-Package: emacs Reply-To: 2569-quiet@debbugs.gnu.org Date: Wed, 04 Mar 2009 13:35:03 +0000 Thank you for filing a new bug report with Emacs. This is an automatically generated reply to let you know your message has been received. Your message has not been forwarded to the package maintainers or other interested parties; you should ensure that the developers are aware of the problem you have entered into the system - preferably quoting the bug reference number, #2569. If you wish to submit further information on this problem, please send it to 2569-quiet@debbugs.gnu.org, as before. Please do not send mail to help-debbugs@gnu.org unless you wish to report a problem with the Bug-tracking system. --=20 2569: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D2569 Emacs Bug Tracking System Contact help-debbugs@gnu.org with problems From unknown Fri Aug 15 16:01:07 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.420 (Entity 5.420) X-Loop: owner@emacsbugs.donarmstrong.com From: help-debbugs@gnu.org (Emacs bug Tracking System) To: Yao Subject: bug#2569 closed by Jason Rumney (Re: Emacs-CVS Win32 MS-IME will lost some input) Message-ID: References: <49AE874F.2050001@gnu.org> X-Emacs-PR-Message: they-closed 2569 X-Emacs-PR-Package: emacs Reply-To: 2569@debbugs.gnu.org Date: Wed, 04 Mar 2009 14:00:04 +0000 Content-Type: multipart/mixed; boundary="----------=_1236175204-31947-1" This is a multi-part message in MIME format... ------------=_1236175204-31947-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This is an automatic notification regarding your bug report which was filed against the emacs package: #2569: Emacs-CVS Win32 MS-IME will lost some input It has been closed by Jason Rumney . Their explanation is attached below along with your original report. If this explanation is unsatisfactory and you have not received a better one in a separate message then please contact Jason Rumney by replying to this email. --=20 2569: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D2569 Emacs Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1236175204-31947-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 2569-done) by emacsbugs.donarmstrong.com; 4 Mar 2009 13:51:43 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=0.0 required=4.0 tests=MURPHY_DRUGS_REL8 autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.190]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n24DpdLO030541 for <2569-done@emacsbugs.donarmstrong.com>; Wed, 4 Mar 2009 05:51:40 -0800 Received: by ti-out-0910.google.com with SMTP id 28so3409914tif.1 for <2569-done@emacsbugs.donarmstrong.com>; Wed, 04 Mar 2009 05:51:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=gURu98flFW5VGlyNv6yDx6edxTe9oNZLdNfqcKvE5Hw=; b=D9nXiNITT4wtDOP9FiBm5+WytWOGbLPheVUfHeog3f4hhWHQpymIB9/EXEkzgN7FSl gB51OcnNbkWkgw5r0iN2wR0M7Mnc7NNAh4Aunk46ZQhrm2SWKfV/yxNJyRWwO1vi7dng TDJ1hyXZLxVHb67Re83pvWlj9NYeGuA/h8r3Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=iqFIITl8Ysg5s4nfo4Rt8xvJi9Qjq2Xl+ExbVBbsF2ra1Cb8XjUe2f4BxJ0/HSw5jw vBnqdQAtZp6Oe6uD92LtQC3N6fsuYrKY+oZfaHctDZdYPrpuOupGWSzczmYPMTZek7V+ FqsjLU2CdUG3hOOuFrQu+bteTltXNZWjasyA0= Received: by 10.110.15.19 with SMTP id 19mr12250698tio.9.1236174698748; Wed, 04 Mar 2009 05:51:38 -0800 (PST) Received: from ?192.168.249.26? ([118.100.161.108]) by mx.google.com with ESMTPS id a4sm298407tib.11.2009.03.04.05.51.37 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 04 Mar 2009 05:51:37 -0800 (PST) Sender: Jason Rumney Message-ID: <49AE874F.2050001@gnu.org> Date: Wed, 04 Mar 2009 21:51:11 +0800 From: Jason Rumney User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: Yao CC: 2569-done@debbugs.gnu.org Subject: Re: Emacs-CVS Win32 MS-IME will lost some input References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Yao wrote: > Hi > > I am using japanese input method .If I input continuously I will lost > some word. > Because Emacs handles WM_IME_CHAR.When first WM_IME_CHAR arrived It > read whole string and ignore the other WM_IME_CHAR messages.So it use > a ignore_ime_char flag. > > The flag is reseted after a WM_IME_ENDCOMPOSITION message.I think when > I input continuously the IME haven't send some WM_IME_ENDCOMPOSITION > message, Because it has not ENDed. > > And the composition window is not followed the cursor. > Thank you for your analysis and patch. I found a simpler patch that fixes the bug, and installed that for now. But it seems that your patch also improves the way the composition phase appears to the user, so I would like to revisit this after the 23.1 release. ------------=_1236175204-31947-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at quiet) by emacsbugs.donarmstrong.com; 4 Mar 2009 13:29:15 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=0.1 required=4.0 tests=FOURLA,MURPHY_DRUGS_REL8 autolearn=no version=3.2.5-bugs.debian.org_2005_01_02 Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.186]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n24DTAvg024099 for ; Wed, 4 Mar 2009 05:29:12 -0800 Received: by ti-out-0910.google.com with SMTP id 28so3405250tif.1 for ; Wed, 04 Mar 2009 05:29:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:resent-from:resent-to :resent-date:resent-message-id:resent-user-agent:x-original-to :received:received:received:x-sieve:received:received:received :received:x-trace:x-sbrs:received:received:received :x-spam-checker-version:x-spam-level:x-spam-status:received:received :path:from:newsgroups:date:organization:message-id:nntp-posting-host :mime-version:content-type:content-transfer-encoding:x-trace :x-complaints-to:nntp-posting-date:complaints-to:injection-info :user-agent:x-http-useragent:xref:to:x-mailman-approved-at:subject :x-beenthere:x-mailman-version:precedence:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:errors-to :x-detected-operating-system:x-f2s-spam-score; bh=xqp69GfMcAtHUTxxVJMuKDQ8PeLUayv2hZzm3jPFxUM=; b=lfzxJtLMhDyVXnBe7vCOFzo+/BsX7B2XtSLY6a8EwNmt4Dh/j6cUxWYZY+uxi2CnFh ZRvYENHEZGDCUQLuXH/quhBgIW90TVNFv0OIqCfZsB/1zRPml3Pneu5SIrtflnWw+pm9 /FR8U+4g/pPA9DIU2Xx/o3hWIfm9d3LY0oz5Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=resent-from:resent-to:resent-date:resent-message-id :resent-user-agent:x-original-to:x-sieve:x-trace:x-sbrs :x-spam-checker-version:x-spam-level:x-spam-status:path:from :newsgroups:date:organization:message-id:nntp-posting-host :mime-version:content-type:content-transfer-encoding:x-complaints-to :nntp-posting-date:complaints-to:injection-info:user-agent :x-http-useragent:xref:to:x-mailman-approved-at:subject:x-beenthere :x-mailman-version:precedence:list-id:list-unsubscribe:list-archive :list-post:list-help:list-subscribe:errors-to :x-detected-operating-system:x-f2s-spam-score; b=fGZiDRlsGu7iUNH1T4FdAaZWwZhPiXV1zf4AcjsnL7q6kY9u3ZoUJC7hPKcSi3Pzjb bqlbOdQNGgG/Wc1ZtAjx19iAuavzPNc0NcWK6p5Q0fAYe9ez/hWk1gLD/vaZP0JQDSH1 7pHZt3hWzIuk3BDuvn5c/b6sbrwS+JhhjzUTk= Received: by 10.110.11.4 with SMTP id 4mr10974893tik.47.1236173349239; Wed, 04 Mar 2009 05:29:09 -0800 (PST) Received: from ?192.168.249.26? ([118.100.161.108]) by mx.google.com with ESMTPS id i6sm18150tid.39.2009.03.04.05.29.07 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 04 Mar 2009 05:29:08 -0800 (PST) Resent-From: Jason Rumney Resent-To: quiet@debbugs.gnu.org Resent-Date: Wed, 4 Mar 2009 21:28:41 +0800 Resent-Message-Id: <49AE8209.40101@gnu.org> Resent-User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081209 Lightning/0.9 Thunderbird/2.0.0.19 X-Original-To: jasonr@localhost Received: from wanchan.jasonr.f2s.com (localhost [127.0.0.1]) by wanchan.jasonrumney.net (Postfix) with ESMTP id 848A61D14 for ; Sat, 27 Dec 2008 04:19:00 +0000 (GMT) Received: from imap.freedom2surf.net [195.224.192.52] by wanchan.jasonr.f2s.com with POP3 (fetchmail-6.3.9-rc2) for (single-drop); Sat, 27 Dec 2008 04:19:00 +0000 (GMT) Received: from murder ([unix socket]) by imap2.freedom2surf.net (Cyrus v2.2.12-Invoca-RPM-2.2.12-3.RHEL4.1) with LMTPA; Fri, 14 Nov 2008 06:55:14 +0000 X-Sieve: CMU Sieve 2.2 Received: from avs03.freedom2surf.net (avs03.freedom2surf.net [195.224.224.198]) by imap2.freedom2surf.net (Postfix) with ESMTP id 1B3F7841B99 for ; Fri, 14 Nov 2008 06:55:14 +0000 (GMT) Received: from localhost ([127.0.0.1] helo=avs03.freedom2surf.net) by avs03.freedom2surf.net with esmtp (Exim 4.43) id 1L0sc6-0006QT-Iv for jasonr@f2s.com; Fri, 14 Nov 2008 06:57:06 +0000 Received: from mx1.freedom2surf.net ([194.106.35.236]) by avs03.freedom2surf.net with esmtp (Exim 4.43) id 1L0sc6-0006QQ-Hq for jasonr@f2s.com; Fri, 14 Nov 2008 06:57:06 +0000 Received: from mk-filter-12.mail.uk.tiscali.com ([212.139.137.147]) by mx1.freedom2surf.net with esmtp (Exim 4.67) (envelope-from ) id 1L0saH-0000CM-MN for jasonr@f2s.com; Fri, 14 Nov 2008 06:55:13 +0000 X-Trace: 11117804/mk-filter-12.mail.uk.tiscali.com/IncomingSBRS/$ACCEPTED/UNKNOWNLIST/140.186.70.10/3.3/bug-gnu-emacs-bounces+jasonr=gnu.org@gnu.org X-SBRS: 3.3 Received: from fencepost.gnu.org ([140.186.70.10]) by mk-filter-12.mail.uk.tiscali.com with ESMTP; 14 Nov 2008 06:55:13 +0000 Received: from mail.gnu.org ([199.232.76.166]:53624 helo=mx10.gnu.org) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1L0sZd-0004Az-SB for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:33 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1L0sZc-0002rS-Ui for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:35 -0500 Received: from lists.gnu.org ([199.232.76.165]:41355) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L0sZc-0002rO-PF for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:32 -0500 Received: from localhost ([127.0.0.1]:33143 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L0sZc-0000S8-K6 for jasonr@gnu.org; Fri, 14 Nov 2008 01:54:32 -0500 Path: news.stanford.edu!newsfeed.stanford.edu!postnews.google.com!e38g2000prn.googlegroups.com!not-for-mail From: Yao Newsgroups: gnu.emacs.bug Date: Thu, 13 Nov 2008 22:02:43 -0800 (PST) Organization: http://groups.google.com Message-ID: NNTP-Posting-Host: 58.221.232.98 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: posting.google.com 1226642563 27550 127.0.0.1 (14 Nov 2008 06:02:43 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 14 Nov 2008 06:02:43 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: e38g2000prn.googlegroups.com; posting-host=58.221.232.98; posting-account=XnuqewoAAAA-kh0O59LCzNagxtK8lZPK User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1,gzip(gfe),gzip(gfe) Xref: news.stanford.edu gnu.emacs.bug:49822 To: bug-gnu-emacs@gnu.org X-Mailman-Approved-At: Fri, 14 Nov 2008 01:54:18 -0500 Subject: Emacs-CVS Win32 MS-IME will lost some input X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+jasonr=gnu.org@gnu.org X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-F2S-Spam-Score: 0 Hi I am using japanese input method .If I input continuously I will lost some word. Because Emacs handles WM_IME_CHAR.When first WM_IME_CHAR arrived It read whole string and ignore the other WM_IME_CHAR messages.So it use a ignore_ime_char flag. The flag is reseted after a WM_IME_ENDCOMPOSITION message.I think when I input continuously the IME haven't send some WM_IME_ENDCOMPOSITION message, Because it has not ENDed. And the composition window is not followed the cursor. This is my patch. ------BEGIN----- Index: src/w32fns.c =================================================================== RCS file: /sources/emacs/emacs/src/w32fns.c,v retrieving revision 1.349 diff -U 3 -r1.349 w32fns.c --- src/w32fns.c 30 Oct 2008 01:27:07 -0000 1.349 +++ src/w32fns.c 14 Nov 2008 05:49:34 -0000 @@ -255,6 +255,9 @@ typedef HMONITOR (WINAPI * MonitorFromPoint_Proc) (IN POINT pt, IN DWORD flags); typedef BOOL (WINAPI * GetMonitorInfo_Proc) (IN HMONITOR monitor, OUT struct MONITOR_INFO* info); +typedef HWND (WINAPI * ImmReleaseContext_Proc) (IN HWND hWnd, IN HIMC himc); +typedef HWND (WINAPI * ImmSetCompositionWindow_Proc) + (IN HIMC himc, IN LPCOMPOSITIONFORM compform); TrackMouseEvent_Proc track_mouse_event_fn = NULL; ClipboardSequence_Proc clipboard_sequence_fn = NULL; @@ -262,11 +265,11 @@ ImmGetContext_Proc get_ime_context_fn = NULL; MonitorFromPoint_Proc monitor_from_point_fn = NULL; GetMonitorInfo_Proc get_monitor_info_fn = NULL; +ImmReleaseContext_Proc release_ime_context_fn = NULL; +ImmSetCompositionWindow_Proc set_ime_composition_window_fn = NULL; extern AppendMenuW_Proc unicode_append_menu; -/* Flag to selectively ignore WM_IME_CHAR messages. */ -static int ignore_ime_char = 0; /* W95 mousewheel handler */ unsigned int msh_mousewheel = 0; @@ -3134,15 +3137,14 @@ } break; - case WM_IME_CHAR: + case WM_IME_COMPOSITION: /* If we can't get the IME result as unicode, use default processing, which will at least allow characters decodable in the system locale get through. */ if (!get_composition_string_fn) goto dflt; - - else if (!ignore_ime_char) - { + if (lParam & GCS_RESULTSTR) + { wchar_t * buffer; int size, i; W32Msg wmsg; @@ -3159,14 +3161,47 @@ my_post_msg (&wmsg, hwnd, WM_UNICHAR, (WPARAM) buffer [i], lParam); } - /* We output the whole string above, so ignore following ones - until we are notified of the end of composition. */ - ignore_ime_char = 1; + release_ime_context_fn (hwnd, context); } + else + { + goto dflt; + } break; - + case WM_IME_STARTCOMPOSITION: + if (!set_ime_composition_window_fn) + goto dflt; + HIMC context = get_ime_context_fn (hwnd); + if (!context) + { + break; + } + f = x_window_to_frame (dpyinfo, hwnd); + COMPOSITIONFORM compform; + struct window *w = XWINDOW (FRAME_SELECTED_WINDOW (f)); + compform.dwStyle = CFS_RECT; + compform.ptCurrentPos.x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w- >phys_cursor.x); + + compform.ptCurrentPos.y = WINDOW_TO_FRAME_PIXEL_Y (w, w- >phys_cursor.y); + + compform.rcArea.left = (WINDOW_BOX_LEFT_EDGE_X (w) + + WINDOW_LEFT_MARGIN_WIDTH (w) + + WINDOW_LEFT_FRINGE_WIDTH (w)); + + compform.rcArea.top = (WINDOW_TOP_EDGE_Y (w) + + WINDOW_HEADER_LINE_HEIGHT (w)); + + compform.rcArea.right = (WINDOW_BOX_RIGHT_EDGE_X (w) + - WINDOW_RIGHT_MARGIN_WIDTH (w) + - WINDOW_RIGHT_FRINGE_WIDTH (w)); + + compform.rcArea.bottom = (WINDOW_BOTTOM_EDGE_Y (w) + - WINDOW_MODE_LINE_HEIGHT (w)); + set_ime_composition_window_fn(context, &compform); + release_ime_context_fn (hwnd, context); + + break; case WM_IME_ENDCOMPOSITION: - ignore_ime_char = 0; goto dflt; /* Simulate middle mouse button events when left and right buttons @@ -7258,6 +7293,10 @@ GetProcAddress (imm32_lib, "ImmGetCompositionStringW"); get_ime_context_fn = (ImmGetContext_Proc) GetProcAddress (imm32_lib, "ImmGetContext"); + release_ime_context_fn = (ImmReleaseContext_Proc) + GetProcAddress (imm32_lib, "ImmReleaseContext"); + set_ime_composition_window_fn = (ImmSetCompositionWindow_Proc) + GetProcAddress (imm32_lib, "ImmSetCompositionWindow"); } DEFVAR_INT ("w32-ansi-code-page", &w32_ansi_code_page, Index: src/w32term.c =================================================================== RCS file: /sources/emacs/emacs/src/w32term.c,v retrieving revision 1.309 diff -U 3 -r1.309 w32term.c --- src/w32term.c 12 Nov 2008 15:51:11 -0000 1.309 +++ src/w32term.c 14 Nov 2008 05:53:00 -0000 @@ -33,6 +33,7 @@ #include #include #include +#include #include "charset.h" #include "character.h" @@ -5061,7 +5062,11 @@ { struct frame *f = XFRAME (WINDOW_FRAME (w)); HWND hwnd = FRAME_W32_WINDOW (f); - + if (f == FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame) + { + PostMessage (hwnd, + WM_IME_STARTCOMPOSITION, 0, 0); + } w32_system_caret_x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); w32_system_caret_y ------END-------- ------------=_1236175204-31947-1--