Linux(のGNOME)やMac OS Xでは、その環境用のアプリケーションの標準的なインターフェースデザインのガイドラインで、
・設定ダイアログに類する物は基本的に「チェックボックスなどの状態を変えたら即座に変更を反映」「OK/キャンセルのボタンは存在しない(すぐに変更が反映されるので意味がない)」
・ただし、フォント設定などのサブダイアログは特例的に「チェックボックスなどの状態の変更は即座には反映しない」「OKボタンを押したら初めて反映」
という風に決まっていたと思います。これが、それぞれtype="prefwindow"とtype="child"に対応しています。
Windowsの場合、上記のような区別はなくて、どちらの場合も「チェックボックスなどの状態の変更は即座には反映しない」「OKボタンを押したら初めて反映」という挙動になるのが標準的です。なので、Windowsではtype="prefwindow"とtype="child"で差はありません。
アドオンを作る際に「設定ダイアログの挙動をプラットフォームの標準的な挙動に合わせたい」と思った時、普通にwindow要素やdialog要素を使うと、上記の挙動の違いを再現するためにnavigator.platformを見て判別するとかそういった面倒な事が必要になってきます。
その手間を軽減して、<prefwindow type="...">と書いておきさえすればFirefoxの方で勝手にプラットフォームに合わせた挙動を再現してくれる、というのがprefwindow要素と一連の要素の役割です。
逆に、全てのプラットフォームで必ず同じ挙動にさせたいのであれば、window要素を使って構成要素を全て作り込む必要があります。(dialog要素も、OKボタンとキャンセルボタンの表示位置がプラットフォームごとに自動調整されます)
引用:
上記説明によるとtype属性がchildの時は「複数のペインをもつことはできません。」となっているのが気になります。
ここは僕が訳したのですが、原文でそうなっていたので特に疑問も持たずそのまま訳してしまいました。
というわけで、実装はどうなっているのかを見てみました。
http://mxr.mozilla.org/mozilla-central/ ... es.xml#595
http://mxr.mozilla.org/mozilla-central/ ... es.xml#778
見たところ、type="child"な設定ダイアログではペインを切り替えてもダイアログの大きさが変化しない(OS Xではtype="prefwindow"な設定ダイアログではペインを切り替えるとダイアログの大きさが内容に合わせて変わる)という違いがあるようです。
実装上は、childな設定ダイアログでも複数ペインは持てるようですが、GUI設計ガイドライン的には想定されていない、といったところではないかと思われます。
……といった感じの回答で当を得ていますでしょうか?