Bug 4437 テキストの選択範囲をIMEで上書きした後undoすると、選択範囲直後の文字を失う
初回投稿日時: 2005年05月15日02時07分15秒
最終更新日時: 2005年05月15日14時07分42秒
カテゴリ: Mozilla Core
SNS:
Tweet (list)
負け戦気分。
かなり重大なバグなので調査したものの、Mozillaのエディタのトランザクション処理が複雑すぎて理解できない。デバッグで追いかけてみると、IMETextTxnがうまくマージされていないため、本来、ひとつにまとまっているべき、複数のIMEトランザクションが分裂してしまっている上、Undo/Redoはこれらがひとつにまとまっている前提で動作しているという不一致が原因なのは分かった。しかし、そこまで。
個人的にhelpwanted。
とりあえず原因となるif文は完全に特定できた。
編集開始時点で選択範囲があれば、トランザクションのマージを許可しない、という条件文だったのだが、これが問題。「入力中」という状態の無い、通常のテキスト入力ではうまく機能していたが、ユーザにとってはひとつのトランザクションで無数のトランザクションを生み出すIMEではこれはうまく機能していなかったわけだ。
ということで、blameで、なぜそのif文が追加されたのかを確認した上で、削除したパッチを作ってみた。 現在、review申請中だ。
できあがってから検証してみたら、パッチ適用後の方が「直感的な」トランザクションが構成される。 これで良いのかもしれない。