rutoの日記: FirefoxのRadialContext拡張の不具合への対症療法 2
Firefox用拡張でRadialContextというのがあって、これを使うと普通のコントキストメニューの代わりにドーナツ状のパイメニューがポインタの周りに出るようになる。
素晴しいのはポインタをドーナツの外に動かそうとしてもちゃんとメニューがポインタに付いてくる点で、マウスジェスチャーの感覚で使える。しかもマウスジェスチャと違ってアイコンが表示される上、ポインタを動かさないでいると説明テキストが出るので、割り当てを忘れてしまっても大丈夫。
これがあるお陰で私は他のブラウザを使えない。
だけど、けっこう前からしばらく使っていると突然メニューが動かなくなって、しかもマウスやキーボードのイベントをグラブしたままになるのでFirefoxがまともに使えなくなくなってしまう。
これじゃ使いものにならないってんで調べてみたところ、とりあえず対症療法が見付かった。
rcMenu.jsでラベルのfontWeightを設定しているところでエラーが出ていた。
設定しているところは幾つかあってその内1つでは
try {...} catch(ex) {dump("Why does setting the font weight fail sometimes?\n" + ex.toString() + "\n");}
という風に例外をキャッチしているが、その他の部分では例外をキャッチしていない。これが原因っぽい。
また、showLabelsの
this.lnode.style.lineHeight= 20*100/currentZoom+ "px";
this.lnode.style.fontSize= 8*100/currentZoom+ "pt";
の部分でも例外が起きている。
とりあえず例外が起きている部分を、try...catch...で囲むと、今のところ一応動いてる。
エラーメッセージにあるように、この例外がなぜ起きるのかは謎なので根本的な解決にはなってない。
おまけ:
application/xhtml+xmlなページでパイメニューが表示されないのは、rcIntegration.jsの
pie_context.body= pie_context.frame_doc.getElementsByTagName("BODY")[0];
というところで大文字の"BODY"を指定してるのが原因っぽい。その後に
if (!pie_context.body) {
pie_context.body= pie_context.frame_doc.getElementsByTagName("body")[0];
}
を入れてみると表示される。
Radialcontext-D (スコア:1)
グーグル検索したらでたどり着きました
この改善法をRadialcontext-Dに適用しようとおもったのですが
該当するファイルが見つかりませんでした……。
いい方法を知っていたら教えていただきたいのですが…。
Re:Radialcontext-D (スコア:1)
C:\Documents and Settings\(ユーザ名)\Application Data\Mozilla\Firefox\Profiles\
のもう少し下のディレクトリにradialcontext.jarというファルがあるはずです(Profilesディレクトリから検索してください)。
(Linuxの場合は ~/.mozilla/firefox/ 以下です)
そのファイルは実はzipファイルなので、拡張子をzipに変えるなどした後展開し、中のファイルを編集します。
その後再びzipで固め、jarという拡張子にして、元のファイルを置き換えます。
zipで固める際、トップに余計なディレクトリを含んでしまうと上手く認識されないので気を付けて下さい。
もしくは、radialcontext-d-2006.12.14-fx.xpiも実はzipファイルであり、中にradialcontext.jarがありますので、それを編集した後再びzipで固めてradialcontext-d-2006.12.14-fx.xpiを作り、インストールします。