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

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

もずはっく日記(2008年3月)

2008年3月5日

Bug 6041 [ViewSrc] ソースビューアでGo to Lineでキャレットは移動するが、スクロールしない
初回投稿日時: 2008年03月05日04時34分26秒
カテゴリ: Firefox Mozilla Core バグ修正
SNS: (list)

Bug 5845で文字列を選択した際にreflowを発生させるために、textframeが一度dirtyになり、その時にnsISelectionController::scrollSelectionIntoViewが呼び出されるとスクロール先の座標算出に失敗するというバグでした。

APIの互換性を保つために、scrollSelectionIntoViewが座標計算前にpendingとなっているreflowをflushするようにしました。このため、特殊な拡張のみがこのバグの影響を受けるかもしれません。このメソッドを呼び出している拡張が、C++のネイティブなコードを持ち、その中からこれを呼び出している場合です。この際に、呼び出し前にnsPresContextnsIPresShellnsIFrameのポインタをweakで保持していた場合や、nsIFrameのプロパティ等をキャッシュしていた場合、scrollSelectionIntoView呼び出し後には再取得する必要があります。前者はstrongで保持していた場合、問題にはなりませんが、それらのオブジェクトは解放されてしまうかもしれませんので、期待通りの動作が維持できるかどうかは未知数です。

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

bug 6041を含むエントリ