Australis   

c0034610_343427.png

Australis の特徴であるサイドビューパネル表示に対応した Prefbar のテスト。リストには対応してなかったりと細かい所は未完成だけど、基本的な部分はちゃんと動きます。

これ作っていて気付いたのは、やっぱり Australis は後方互換性が恐ろしく悪いという部分で、例えばメニュー表示に対応したボタンは以下のように表示されてしまう。
c0034610_3493394.png

パネル上にコンテキストメニューが表示されてしまうというかなり付け焼き刃なデザインになる。もっと言うとメニューボタンはレイアウトレベルで崩れが起きる。またアドオンによってはボタンが何処に置かれているのかを検知して、表示を切り替えるという手法を取っているのもあるのが現状(検知する事自体は簡単だが、結局新たにコードを書く必要があるわけで手間が増える)。

しかもこのサイドビューパネルというのが曲者で、サイドビューパネル自体はXULで定義するのだけど、表示するには CustomizableUI.createWidget() で登録しないといけない。でも実際にはボタンにはパネルの ID が属性値 viewId として割り振られていて、それを見てパネルを引っ張っているようなので Firefox 側でボタンの viewId を見てそれに該当するパネルを自動的に読み込めば良いはずなんだけど、なんでこんな手間が増えることしているのか疑問だし、IDが重複するとエラー吐いて止まるのもどうなのだろうか…。



onWidgetAdded(aWidgetId, aArea, aPosition)
WidgetがAreaに追加された時に発生

onWidgetMoved(aWidgetId, aArea, aOldPosition, aNewPosition)
Widgetが動かされた時に発生

onWidgetRemoved(aWidgetId, aArea)
Widgetが削除された時に発生

onWidgetBeforeDOMChange(aNode, aNextNode, aContainer, aIsRemoval)
WidgetがCustomizableUIのDOMノードに変更を加える前に発生

onWidgetAfterDOMChange(aNode, aNextNode, aContainer, aWasRemoval)
WidgetがCustomizableUIのDOMノードに変更を加えた後に発生

onWidgetReset(aNode, aContainer)
リセットが完了した後に発生

onAreaReset(aArea、aContainer)
リセットがAreaのDOMノード上で行われた時に発生

onWidgetCreated(aWidgetId)
WidgetのDOMノードが作成された時に発生

onWidgetAfterCreation(aWidgetId、aArea)
Widgetが作成されAreaに追加されて時に発生

onWidgetDestroyed(aWidgetId)
Widgetが破棄される時に発生

onWidgetInstanceRemoved(aWidgetId、aDocument)
Windowが破棄されるのに伴ってWidgetも破棄される時に発生

onWidgetDrag(aWidgetId、aArea)
Widgetがドラッグされた時に発生(カスタマイズ画面でも発生)

onCustomizeStart(aWindow)
カスタマイズモードの開始時に発生

onCustomizeEnd(aWindow)
カスタマイズモードの終了時に発生
[PR]

by norah_models | 2013-12-27 17:48

<< Australis と後方互換性 Chrome Manifest V2 >>