この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2014年8月)

2014年8月30日

Bug-org 1057192 [TSF] Microsoft IME puts twice the first character of new composition when you start new composition when there is old composition
初回投稿日時: 2014年08月30日16時47分12秒
カテゴリ: Mozilla Core Mozilla34 TSF Windows バグ修正
SNS: (list)

MS-IMEを使って、変換文字列がすでにある状態で、新しい文字を入力すると、変換済みの文字列が確定され、新しい未確定文字列として文字が入力されるのですが、TSFモードでは、この最初に入力した文字ごと確定され、未確定文字列にも含まれるため、文字がダブってしまう、というバグです。

このバグの原因は、Bug-org 1050703の修正によるregressionでした。Bug-org 1050703では、キャレット位置が変化しない場合、compositionstartイベントを送信する前に、選択範囲の調整を行わないように修正しましたが、この際に、誤って、未確定文字列の一部のみが確定される、今回のようなケースの際には、常に、選択範囲の調整を行っていないのが原因でした。

ひとまず、regressionは、即、修正しましたが、そのままでは、「あい」と入力し、変換後、「う」と入力すると、「あいう」と確定され、「う」が選択された状態で、未確定文字列の編集が始まり、未確定の「う」で上書きする、という動作になっていました。

これでは、「う」を確定後にUndoすると、「あいう」から「あいう」になり、次のUndoで全てがキャンセルされます。これは明らかに、ユーザの感覚とは異なるものですので、未確定文字列の一部が確定される際には、一度、未確定のままキープされる文節の文字列を削除した上で確定し、その後、未確定文字列を復元するように修正しています。これにより、「あいう」→「あい」→「」というトランザクションが記録されるようになっています。

関連するかもしれないエントリ

bug-org 1057192を含むエントリ