May 30, 2006

Drag de Go と Download Statusbar の競合について

現在(Drag de Go - 0.1.0)にて Download Statusbar を入れている場合、画像上でジェスチャーが発動できない不具合があります。
Drag de Go では画像上でもジェスチャーできるように Firefox のドラッグ&ドロップ機能( nsDragAndDrop グローバルスコープ中の関数)に変更を加えているのですが、Download Statusbarがドラッグ&ドロップ機能を利用するため?(中をみると nsDragAndDrop を記述しているのですが、何のために書いているかも?機能的にはまったく意味がないような気がします。)にオーバーレイでこの関数を直接参照しているためこの変更がキャンセルされております。
(グローバルスコープ中の関数を拡張で利用するために、その関数のファイルをオーバーレイで参照するというのは、拡張作成の作法として正しいのでしょうか?
それとも Firefox 本体の関数を変更するほうが間違ってるのかな・・・?
分かる人教えてください。
なんにせよDownload Statusbarを入れていると、この nsDragAndDrop に変更を加えることができません・・・。)

ってことでDownload Statusbarを入れている方は、拡張のchrome > content >downbaroverlay.xul を開いてもらうと
<script src="chrome://global/content/nsDragAndDrop.js"/>
ってのがあると思うのですが、これを削除してもらえたら不具合は解消するはずです。
削除してもDownload Statusbarには不具合は起きないと思います。

根本的な解決としては、Download Statusbarに対処してもらうのが一番なのですが、どうなんでしょう?
こちらで対処するには、自前の nsDragAndDrop を搭載するってことになるのですが、これをするとまたファイルが増えちゃう・・・。

Get Firefox!
この記事へのコメント
お疲れさまです。
そもそもSuperDragAndGoの方はどうなんでしょう?
独自に実装ですかね?
Posted by yurt at 2006-05-30 21:23
SuperDragAndGo は問題ありません。
まずなぜジェスチャーができなくなるのかと言うと、Firefox のドラッグ&ドロップ機能では、ドラッグを開始したオブジェクトと同じオブジェクト上にドロップしても何も起きないように設定されています。(これはドラッグ&ドロップをキャンセルするためだと思います。)
ではなぜ SuperDragAndGo では問題ないかと言うと画像をドラッグしたときにそのデータを書き換えることで%Temp%ファイルの問題を回避しているからです。
そのため SuperDragAndGo ではドラッグ中のオブジェクトが画像(イメージオブジェクト)であるとか、ドラッグが開始されたオブジェクトは何かという情報は欠落してしまっています。
つまり開始場所がわからないので、ジェスチャーができてしまうということです。
ですが Adblock Plus のステータスバーアイコンに画像をドロップしてフィルターに登録したり、画像をエクスプローラーにドラッグ&ドロップして保存なんてことができなくなるという弊害もあります。
Drag de Go ではこれらを解決するため%Temp%の解決法を変更したんですが・・・。
Posted by yukichi at 2006-05-31 00:57
なるほど。詳しい説明ありがとうございます。
こちらが立てばあちらが立たず、・・といったところでしょうか。
朝顔日記さんのところのuserChrome.jsとかではDownload Statusbarを上書きできたりしないのかな。
でも方向性が違うか・・。
Download Statusbarの修正版を待つしかなさそうですね。
Posted by yurt at 2006-05-31 12:27
とりあえず Download Statusbar にて修正をお願いしてみました。
どのようなお返事をいただけるかは分かりませんが・・・。
いいお返事がいただけない場合は、こちらで nsDragAndDrop を実装しますが、nsDragAndDrop に変更を加えるような他の拡張を入れた場合やはり不具合が起きます。
根本的には Download Statusbar に対処してもらうのが一番ではあります。
Posted by yukichi at 2006-05-31 22:55
コメントを書く
※Name:

Email Address:

URL:

※Comments:

この記事へのトラックバック