スポンサーサイト
投稿日時 : -------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- --:-- | スポンサー広告
LinuxのFirefoxアドオン設定画面でOKボタンなどが表示されない件
投稿日時 : 2008-12-15 10:43
 Firefoxでアドオンのオプションウィンドウを開くとOKボタンやキャンセルボタンが表示されるものと、閉じるボタンしか表示されないものがあります。はじめはそういうふうに作ってあるからだと思っていたんですが、同じアドオンでもWindowsではOKボタンと閉じるボタンがあるのにLinuxだと閉じるボタンしかないというケースがあるのに気づきました。TabMixPlusのように両環境ですべてのボタンが表示されるアドオンもあります。
 

原因

 これが自分のアドオンのDropfoxの開発中にも再現したので観念して原因を探ってみたところ、オプションウィンドウのXULのルートエレメントがprefwindowの場合に閉じるボタンだけになり、同じくルートエレメントがdialogやwindowの場合はOKボタン、キャンセルボタン等、ソースで指定した通りに表示されることが分かりました。
 なぜこんなことが起こるかというと、UbuntuのデフォルトのウィンドウマネージャであるGNOMEの設定ウィンドウにはOKやら適用やらキャンセルやらのボタンが「基本的には」ありません。変更した値は自動保存されます。これはMacでも大体同じだと思います。で、Firefoxのprefwindowもウィンドウマネージャのデフォルトの動作に倣って、自動的にOKボタン、キャンセルボタンを非表示にするという仕様のようです。dialogやwindowをルートエレメントとした場合は設定ウィンドウとはみなされないのでこの仕様の影響は受けません。そんなわけですべての環境で統一したGUIを提供したい場合はprefwindowは向いていないようです。
 
技術的に正確で詳細な情報は以下を参照するとよさげです。
MozillaZine.jp :: トピックを表示 - prefwindowのtype属性について
 

対応策

 検索してみるとこれは結構有名な話のようで簡単に解決策が見つかりました。アドレスバーに「about:config」として詳細設定画面を開き、
browser.preferences.instantApply
の値をfalseにします。これでLinuxやMacでもWindowsと同じようにソース通りのボタンが表示されるようになります。
 
 正直、デフォルトでfalseにしておくか、ユーザやプログラマが簡単にtue/falseを切り替えられるような仕組みが提供されていてもよさそうな気もしますが、昔から変更される気配がないので自分で設定するしかないようです。実行プラットフォームのガイドラインに即しているわけですし。
 
 
スポンサーサイト
2008-12-15 10:43 | Firefox | Comment(0) | Trackback(0)
Comment
コメントを書く
#

管理者にだけ表示
Trackback
Trackbak URL:http://itmst.blog71.fc2.com/tb.php/154-a58c0fef
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。