Pano 0.9pre の現状

タブグループとかタブをツリー状に表示することを目的としたPano。開発中のversion 0.9preの現状をば。
最新版は https://github.com/teramako/Pano/downloads にある

LessChrome HD対応

PanoではPanoサイドバーが開かれている間はタブバーを隠す機能があるのだが、LessChrome HD という拡張(タブバー以外を普段は隠すことができる)との組み合わせが悪いことを @dynamitter さんに教えてもらって対応した。

ツリーへ閉じるボタンを追加

ツリー内のタブアイテムは中ボタンクリックで閉じられるわけだが、普段使用するキーボードがThindPad USB keyboard で中ボタンクリックが使えないという超個人的な理由もあり、ボタンを追加した。

一応 id:tanakahisateru さんからも要望されたので、個人的理由ばかりではないか...

閉じるボタンがあるとページタイトルが表示される幅が狭まって嫌だという要望もあったので、デフォルトでは表示しない設定として、about:config 等からextensions.pano.showCloseButtontrueにすることで表示されるようにした。

技術的な話だが、ツリーの生成にはカスタムツリービュー - MDNを使用している。ツリーの各アイテムに対してDOMを生成しないので効率が良いのだが、制限が多く、ボタンの配置ができない。
どうしようか? と悩んだ結果。唯一使えるチェックボックス列を追加し、閉じるボタンの画像を配置することで解決させた。お陰でボタンとは微妙に異なる挙動になるが、まあ仕方ない。

typo修正

アフォなミスを犯した。
普通はタブの切り替えにダブルクリックが必要だが、それを1クリックでできるようにするオプション値(extensions.pano.switchTabBySingleClick)をミスでextensions.pano.swichTabBySingleClicktが抜けた状態になっていた。
おそらく設定している人が多いと思うので、使用者は再設定すべし。

オプションダイアログの追加

オプション値が現在3つと増えてきたので、設定用のダイアログを用意した。
about:addons でアドオン一覧を出すと設定ボタンがあるはず、そこから設定可能。

URLアイテムをドラッグ&ドロップできる機能の追加

ツリーはドラッグ&ドロップでタブ位置などを入れ替えたりできるようにしているが、リンクをドロップしたらタブに開くことができるようにしてくれという要望があり、対応した。

ページ内のリンクだけでなく、ブックマークやブックマークフォルダのドロップにも対応している。

仕様
  • アクティブなグループへドロップした場合:
    • about:configの設定値browser.tabs.loadInBackgroundがtrueならバックグランド
  • falseならフォアグランドに開く
  • アクティブでないグループへドロップした場合:
    • バックグラウンドに開く
    • アプリタブ等の特殊なグループへのドロップでは、新たなグループを作成して、その中に開く
  • 複数アイテムがドロップされた場合(ブックマークフォルダなど):
    • 最初のアイテムのみ上記判定を行い、あとは全てバックグランドに開く
    • about:configの設定値browser.tabs.maxOpenBeforeWarn値以上の数が開かれる場合はプロンプトが表示される
  • バックグラウンドに開かれるタブ
    • 複数一気にロードされるのでは堪らないので、アクティブになるまでロードさせない設定にしている

タブのグループ間移動を行ったとき、期待しないロードが発生する問題

グループ間移動を行った場合、各タブを一つ一つ移動させていく過程で現在アクティブなタブを移動すると、別のタブが選択されてしまうことで、ロード待機中のものがロードされてしまうという問題。
Load Tabs Progressively :: Add-ons for Firefoxとの組み合わせたときの問題として報告されたが、about:configの設定値browser.sessionstore.max_concurrent_tabs0にしている場合でも発生する。

基本的には順番に移動させて行くが、アクティブなタブは一番最後に後回しにすることで解決されたと思う。(Load Tab Progressivelyは入れていないので未検証)

今後

ブックマークなどもドロップできるようになったことで、ブックマークサイドバーも同時に開いて置けるようになると便利かもしれないと思い、Panoサイドバーの下半分に他のサイドバーを埋め込めるようにしようかと思っている。(既にローカルのgitブランチでは実装済み)