Feb 22, 2006

scrollboxとoverflow

スクロールボックスまわりで行き詰まってた件だけど、なんやかやしとるうちに解決できてしまいました。

scrollbox要素は内容を勝手にクリッピング表示しやがるという仕様なのだとばかり思ってたんだけど、xul.cssでの基本的なスタイル定義を見てみると、overflow: hidden;と書いてある……えぇぇぇぇぇええ、要素の仕様でそうなってるんじゃなくって単にCSSの指定でそうなってただけなのォォォォオオ!? 今の今まで気付いてなかった僕はアホすぎですね。

つうことはですよ。scrollbox要素の中にスクロールバーが表示されないのはoverflow: hidden;が指定されていたからでしかなく、overflow: auto;等にすれば他の要素と同じようにスクロールバーが表示されるってことですか? ンでもって、scrollbox.boxObject.QueryInterface( Components.interfaces.nsIScrollBoxObject )の各種メソッドを使えばスクロールバーを表示しながら同時にスクリプトでscrollboxの内容のスクロール状態を制御できるってことですか? nsIScrollBoxObjectの機能はoverflowで溢れた内容を制御するための物で、この機能を使える唯一の要素型がscrollboxだ、だから制御可能なスクロール領域を作るにはscrollboxとoverflowを組み合わせれ、という話だったんですか?

……ということにやっと思い至ったので、バインディングを使ってタブバーの中にscrollboxを組み込む形にコードを書き直してみた。テストしてみたらやはり予想通りに上手く動いてくれたので、SeaMonkeyでテストを繰り返しながら細かいバグを取り除いて、これで完成としておく。

ああ疲れた……

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能