XULには元々、「要素の表示順を変える」ordinal属性というものがあり、タブブラウザ拡張の「タブの並べ替え」は、実はこの属性を編集しているだけに過ぎません。
タブの並べ替え機能は、並べ替えた後の順番でタブを保持する配列・mTabsプロパティと、タブの位置を変えるmoveTabTo()(絶対指定)およびmoveTabBy()(相対指定)メソッドという、ordinal属性を使いやすくするための三つの拡張プロパティ/メソッドを中心にして実現しています。
この中で特に重要なのは、mTabsプロパティです。
タブのordinal属性は、moveTabTo()とmoveTabBy()以外にremoveTab()などのメソッドでも編集されます。しかしordinal属性でタブの表示順を変えただけだと、tabbrowserウィジェットに元からある各メソッドを使ったときに色々と問題が起こります。これは、元からあるメソッドが「内部のtabs要素のn番目の子」という形でそれぞれのタブにアクセスしているせいで、表示順と実際のタブの順番とが食い違ってしまうためです。
タブブラウザ拡張では、拡張メソッドの全てでmTabsプロパティを参照するようにしており、また、元からあるtabbrowserウィジェットのメソッドもそのように改変します。
© 1999-2025 Piro:outsider reflex, some rights reserved.