Feb 24, 2008

マルチプルタブハンドラで複数タブをまとめてドラッグ&ドロップできるようにしたよ

表題の通り。Multiple Tab Handlerではタブを選択して操作する機能があるけど、選択後のタブをドラッグ&ドロップしたら全部一緒に移動するようにしてみた。

というのはわりとすぐにできたんだけど、ツリー型タブとの組み合わせが少し大変だった。ツリー型タブがある状態のタブの移動は、単にタブの位置を変えるだけじゃなく、ツリー構造の変更も伴うから。故にツリー型タブではタブのドロップ時の処理をほとんど丸ごと置き換えるようにしていて、そっちの方でMultiple Tab HandlerのAPIを使って対応する(つまりMultiple Tab Handlerはツリー型タブがあるときは、タブのドロップ時は特に何もしない)ようにした。

あと、Firefox 3ではCtrl-ドラッグでタブを複製できるようになってるんだけど、ツリー型タブをこれに対応させるのにも手間取った。というか、今まで適当な処理でそれなりに動いてた部分について潜在していたバグが一気に表面化したという感じ。丸1日くらい使って地道に直した。

ツリー化された複数タブの選択→ドラッグ&ドロップの挙動については、例によってAdobe Illustratorのレイヤ/オブジェクトツリーの挙動を参考にしてる。

以下は未実装の項目。

  • Firefox 3ではウィンドウをまたいでタブをドラッグすると「タブの移動」扱いになるけど、ツリー型タブはまだこれに対応していない。→Tree Style Tab 0.5.2008022402で対応
  • Ctrl-ドラッグでのタブの複製、ウィンドウをまたいだドラッグ&ドロップによるタブの移動について、Multiple Tab Handlerはまだ対応していない(ツリー型タブの方にかまけててすっかり忘れてた)。→Multiple Tab Handler 0.2.2008022402で対応
  • タブのドロップ先がタブバー以外の場合はタブで開いてるページのURIが渡されるんだけど、これも選択されたタブ全部のURIを渡すようにした方がいい? 受け入れ側が複数URIのドロップを想定していない場合は動作がおかしくなる気がする。ああでもHTMLとかプレーンテキストとか、他のアプリケーションやテキスト入力欄に対してのみ渡されるflavourなら問題ないか?
エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能