FixScroll0.7版をリリースしました。

機能的なバージョンアップはありません。
バグFIXというかレビューポイントFIXです。これでFullReviewを通るはず。


昨日から今日にかけて、Mozilla勉強会に参加してきました。
10月1日(土) に Mozilla 勉強会@東京 6th を開催します | Mozilla Developer Street (modest)


初めての勉強会だったのですが、皆さん温かく接してくださり、非常に楽しい時間をすごせました。ありがとうございます。
博識な方ばかりで肩身の狭い思いをしたのも良い勉強でした。


特にうれしかったのが、アドオン開発をはじめたきっかけともいえるpiroさんとお会いしてお話できたこと。
しかもアドオンのレビュー指摘でなかなか解決できなかった問題を相談したら、サクッと解決してもらえました。さすがのpiro先生です。


Firefox Hacks系の最新本が出るそうなので、お礼も兼ねてばっちり購入予定です。


1,2ヶ月ほど悩んでいた問題は以下です。

DOM mutation events profoundly degrade performance, and that degradation is not reversed by removing the listeners. We can't allow mutation listeners except when they're absolutely necessary, and never for the top-level browser document.


XULのscrollbarを利用していたのですが、scrollbarの変更を取得するのにはDOMAttrModifiedを利用する必要がありました。
が、そもそも単体でXUL内で呼び出すものではないとIRCの外国の方が教えてくれました。

そこで思いついたのが、xul:box要素(親)の中にxul:box要素(子)を入れて、子のほうのwidth,heightを調整して、スクロールバーを表示させる方法です。
しかし、ひとつ躓いたのが子要素に対してtextを設定しないと縦のスクロールバーが表示されないことでした。(textを設定すると、XMLワーニングが出ます。)


ワーニングが出るXUL

<box id="parent" style="width:100px; height:100px;">
  <box id="child" style="width:1000px; height:1000px;">text要素
  </box>
</box>

警告: box 要素の XUL ボックスがインラインの子要素 #text を含んでいるため、すべての子はブロック中で折り返されます。


このワーニングを防止かつ縦のスクロールを表示する方法を30分くらいでpiroさんがさくっと調べてくれました。
「気になるんだよねー。詳しく教えて」と聞いてくれました。優しくていい人すぎる!!
#piroさんに似顔絵サイン入りの名刺をいただいたのは一生の秘密です^^無理言ってすいませんでした。


リリースしたXUL

<box id="parent" style="width:100px; height:100px; position:fixed; display:block;">
  <box id="child" style="width:1000px; height:1000px; display:block;"> 
  </box>
</box>


そもそも縦方向のスクロールが出ないのはXULのbox要素のデフォルトのdisplayスタイルが'-moz-box'になっていて、このスタイルだと横方向か縦方向のどちらかにスクロールバーを表示するのが仕様だったのが原因です。

Child elements are laid out horizontally or vertically (based on the value of the -moz-box-orient property).

display - CSS: Cascading Style Sheets | MDN


それを回避して縦横両方にスクロールバーを表示させるために、display:blockを指定しています。
また、position:fixedにすることで、親要素のwidth,heightが利くようにしています。


また、pano作っているteranekoさんにcanvas要素に対して-moz-elementを指定するといいのではとアドバイスいただきました。ありがとうございます。
ちょっと試したところ、今の構成だとうまく使えない感じだったので、今回のリリースには含めませんでした。今後活かす方法を検討中です。


Mozilla JapanのDynamisさんにモバイル版も作ったらと言われたので、今後の課題に追加です。
ただ、Androidしか環境がないので、携帯はiOSにまみれている私は環境を求めるところから。