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

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

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

2014年11月21日

Bug-org 1094000 Caret position becomes out of message body text box
初回投稿日時: 2014年11月21日16時38分16秒
カテゴリ: Mozilla Core Mozilla36 バグ修正
SNS: (list)

min-heightが指定されていないcontenteditableな要素の内容を、Backspaceキーで全て削除すると、プレースホルダー用(高さ確保用)の<br>要素の自動挿入が行われず、height: 0;になってしまい、キャレットが変な位置に表示されるというバグです。

全てを選択した状態からDeleteキーやBackspaceキーで削除した場合や、Deleteキーで削除した場合には問題がありませんでしたが、Backspaceキーで削除した場合のみ、このバグが発生していました。なぜこんなことになっていたかというと、選択範囲無しでBackspaceキーが押された場合のみ、専用のパスで削除処理を行っていたため、このような変な条件付きのバグになってしまっていました。

Backspaceキーで削除した場合にも立てておかないといけないフラグを立てるようにし、正常に動作しているケースと同様にnsHTMLEditRules::InsertBRIfNeeded()が後処理で確実に呼び出されるように修正しています。

なお、他のブラウザの動作と比較した場合、未編集のcontenteditableな要素も<br>要素を自動的に挿入するべきなようなので、そちらはBug-org 1098151にバグを登録し、エディタのモジュールオーナーのEhsanの判断を待っているところです。

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

bug-org 1094000を含むエントリ