From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jason Rumney Newsgroups: gmane.emacs.bugs Subject: bug#10299: Emacs doesn't handle Unicode characters in keyboard layout on MS Windows Date: Tue, 07 Aug 2012 20:15:30 +0800 Message-ID: <87txweq4nx.fsf@gnu.org> References: <83vcph0w9t.fsf@gnu.org> <83obv821wv.fsf@gnu.org> <831us31atj.fsf@gnu.org> <83pqflzr1d.fsf@gnu.org> <836298hrdt.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1344341785 14633 80.91.229.3 (7 Aug 2012 12:16:25 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 7 Aug 2012 12:16:25 +0000 (UTC) Cc: lekktu@gmail.com, 10299@debbugs.gnu.org To: Joakim =?UTF-8?Q?H=C3=A5rsman?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Aug 07 14:16:23 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Syihx-0001sj-6q for geb-bug-gnu-emacs@m.gmane.org; Tue, 07 Aug 2012 14:16:21 +0200 Original-Received: from localhost ([::1]:60795 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Syiht-0003LG-Bm for geb-bug-gnu-emacs@m.gmane.org; Tue, 07 Aug 2012 08:16:17 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:48700) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Syihm-0003I6-2t for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2012 08:16:16 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Syihg-0001HA-7f for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2012 08:16:10 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:57704) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Syihg-0001GY-4H for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2012 08:16:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SyipN-00023Y-Pf for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2012 08:24:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jason Rumney Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Aug 2012 12:24:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10299 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 10299-submit@debbugs.gnu.org id=B10299.13443422267877 (code B ref 10299); Tue, 07 Aug 2012 12:24:01 +0000 Original-Received: (at 10299) by debbugs.gnu.org; 7 Aug 2012 12:23:46 +0000 Original-Received: from localhost ([127.0.0.1]:39017 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Syip6-00022u-Cp for submit@debbugs.gnu.org; Tue, 07 Aug 2012 08:23:46 -0400 Original-Received: from mail-pb0-f44.google.com ([209.85.160.44]:38732) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Syip4-00022m-AO for 10299@debbugs.gnu.org; Tue, 07 Aug 2012 08:23:43 -0400 Original-Received: by pbbrr4 with SMTP id rr4so5636040pbb.3 for <10299@debbugs.gnu.org>; Tue, 07 Aug 2012 05:15:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type:content-transfer-encoding; bh=ZT7TAi1dD85eNJatno78tYYGS+p1W5OPSr/5p6/Aom8=; b=H+pLp6Jj5DzY2S7Vwm2l+qSIKxqFyuFb7pUiX6WbGE5+L7G+St6Lh/d7djnn1bsVzb U3f4cwXkwIYm5+aiN/2gs1Y0pbn8NlnzC3JxJMnEbp+lAnAgVTog7NIiZZ3lilDhkITc +kk/BEqqdJ7IeIEBVLjxphSo1zBwZf7PzA7NRhyf9BYmTN5XqKc5r1WgQVw6UfzFihOS GBdBKZqhJeOGUJ9kuP+B3zBK6NcIHMp8fw/5aQYgAB19OB67cGsL9rLyUJgeGDgLGdI6 QOGci1JdlDnJIVT9bQeYS6sf0NEx1hNmHTzyB03mEjoDmPcMi2g9jCq8vvQA1bR5h9YI iMDQ== Original-Received: by 10.68.129.38 with SMTP id nt6mr27683176pbb.76.1344341741930; Tue, 07 Aug 2012 05:15:41 -0700 (PDT) Original-Received: from home.jasonrumney.net ([180.75.28.25]) by mx.google.com with ESMTPS id oj8sm7664085pbb.54.2012.08.07.05.15.36 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 07 Aug 2012 05:15:40 -0700 (PDT) Original-Received: by home.jasonrumney.net (Postfix, from userid 1000) id D23981125; Tue, 7 Aug 2012 20:15:30 +0800 (MYT) In-Reply-To: ("Joakim =?UTF-8?Q?H=C3=A5rsman?="'s message of "Mon, 6 Aug 2012 22:20:01 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org 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+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:62908 Archived-At: Joakim H=C3=A5rsman writes: >> >> +/* Set text of w32 frame with handle HWND to TEXT. >> + >> + We explicitly switch between the Unicode and ANSI version of >> + SetWindowText because Emacs isn't compiled with UNICODE defined to >> + retain compatibility with Windows 95. */ >> + >> +static void >> +w32_set_frame_text (HWND hwnd, LPCSTR text) >> +{ >> + if (os_subtype =3D=3D OS_NT) >> + SetWindowTextW (hwnd, (LPCWSTR)text); >> + else >> + SetWindowTextA (hwnd, text); >> +} > The change to SetWindowTextW for frame titles was needed because > otherwise the frame title was cut short after the first character > (presumably because the window class name is a UCS-2 wide string and > the second byte therefore is null). This is exaclty the case they talk > about at your link. >> if (STRING_MULTIBYTE (name)) >> - name =3D ENCODE_SYSTEM (name); >> - >> + name =3D ENCODE_SYSTEM (name); >> + >> BLOCK_INPUT; >> - SetWindowText (FRAME_W32_WINDOW (f), SDATA (name)); >> + w32_set_frame_text(FRAME_W32_WINDOW (f), SDATA (name)); But the above doesn't pass a UCS-2 wide string to SetWindowTextW. It passes an 8-bit string encoded in the system 8-bit encoding, then simply casts it to a wchar_t! You cannot possibly get the correct frame title usi= ng this patch.