From jasonrumney@gmail.com Wed Mar 4 05:29:15 2009 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-------- From jasonrumney@gmail.com Wed Mar 4 05:51:43 2009 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. From unknown Thu Aug 14 21:52:01 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: $requester Subject: Internal Control Message-Id: bug archived. Date: Wed, 01 Apr 2009 14:24:10 +0000 User-Agent: Fakemail v42.6.9 # A New Hope # A log time ago, in a galaxy far, far away # something happened. # # Magically this resulted in the following # action being taken, but this fake control # message doesn't tell you why it happened # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator