Dictionary Tooltip 1.1.3のポップアップが出ない問題が解決

先日、Dictionary Tooltip最新版(ver.1.1.3)でポップアップが出ない問題が起り、旧バージョンで凌ぐことにしたのだが、これが解決した。
あの後もいろいろと検索してみたのだが、どうも自分と同じ現象の人はいないようで、どうして自分だけこんな事になっているのか納得がいかないため、アドオンの中身を解析してみることにした。
単語をダブルクリックすると単語の下にアイコンが表示され、そのアイコン上にマウスカーソルを置くとポップアップウィンドウの中に単語検索結果が表示されるはずなのだが、これが出ない。エラーコンソールでも何も出ていない。
とりあえずマウスカーソルを置くとポップアップウィンドウが表示されるはずの部分のソースを見ていくと、どうもポップアップウィンドウ表示位置の計算部分が怪しそう。何をやっているかよくわからなかったので自分で表示位置計算部分を書いてみたところあっさり表示された。結局は表示位置の計算がおかしかったのかなと思って元のコードに直してFirefoxのウィンドウをいじっていたら、画面の左側ではポップアップウィンドウが表示されるではないか!Firefoxのウィンドウを右へ持って行くほどポップアップウィンドウがさらに右にシフトし、終いにはFirefoxのウィンドウの右端より右へ行ってしまい見えなくなってしまった。
自分の環境ではマルチディスプレイの右側の画面でブラウザを表示させているのでポップアップウィンドウが出てこなかったのだ。普通に1画面でブラウザを最大化していれば何の問題もなく表示される。自分だけ出てこなかったわけだ。
あまり深いところまで解析はしていないのだがとりあえず修正した表示位置の計算部分を載せておく。最近は横長のディスプレイが普通だし、画面の右側がブラウザと決めている人もいるだろう。(自分ぐらいか。。)

C:\Documents and Settings\(ユーザ名)\Application Data\Mozilla\Firefox\Profiles\(ランダムID).default\extensions\{C6128004-4838-4708-9A97-BB172D17767D}\chrome\dictionarytip.jar

上記のアーカイブを解凍するとdictionarytipOverlay.jsというファイルがある。その中の524行目の「if (prefNearWord) ....」という所から552行目までを下記のコードに書き換える。

            if (prefNearWord)		//if the user chooses to display the dtip_toolTip near the word
            {
                if ((window.screenX + window.outerWidth) < (this.screenX + dimTip.width))    //show left
                {
                    if ((window.screenY + window.outerHeight) < (this.screenY + dimTip.height + 40))    //show top
                    {
                        dimTip.left = this.screenX - window.screenX - dimTip.width;
                        dimTip.top = this.screenY - window.screenY - dimTip.height - 40;
                    }
                    else    //show bottom
                    {
                        dimTip.left = this.screenX - window.screenX - dimTip.width;
                        dimTip.top = this.screenY - window.screenY;
                    }
                }
                else    //show right
                {
                    if ((window.screenY + window.outerHeight) < (this.screenY + dimTip.height + 40))    //show top
                    {
                        dimTip.left = this.screenX - window.screenX;
                        dimTip.top = this.screenY - window.screenY - dimTip.height - 40;
                    }
                    else    //show bottom
                    {
                        dimTip.left = this.screenX - window.screenX;
                        dimTip.top = this.screenY - window.screenY;
                    }
                }
            }