― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

新しいトピックを投稿する トピックへ返信する  [ 4 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2009年9月14日(月) 11:59 
オフライン

登録日時: 2007年1月14日(日) 14:24
記事: 138
お住まい: Osaka,Japan
 先人の智慧を拝借致したくお願い申し上げます。

 旧XULチュートリアルを参考に、ドラッグ・アンド・ドロップに対応した拡張を作ろうとしています。
 Drop イベントハンドラ内で openDialog() により、ダイアログ・ボックスを開く仕様にしているのですが、開いたダイアログ・ボックス内の memuitem 要素がマウスで操作できません。
 これはそのような使い方が想定されていないのか、あるいはなんらかのバグなのか、使い方が間違っているのかご教示願えないでしょうか。

 テスト用に拡張を作成してダイアログを開くところの JavaScript コードは以下のようになっています。
コード:
var   pdata={
   setAttribute: function()
   {
      window.openDialog("chrome://test/content/attribute.xul","","chrome,dialog,modal");
   }
};
var   puploader = {
   getSupportedFlavours : function ()
   {
      var flavours = new FlavourSet();
      flavours.appendFlavour("text/unicode");
      return flavours;
   },
   onDragEnter: function (evt,flavour,session){
   },
   onDragOver: function (evt,flavour,session){
   },
   onDrop:function(evt,dropdata,session)
   {
      pdata.setAttribute();
   },
   init: function()
   {
   }
};
window.addEventListener('load',puploader.init,false);

 attribute.xul は以下の通りです。
コード:
<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<!DOCTYPE dialog SYSTEM "chrome://test/locale/attribute.dtd">
<dialog id='test-attribute'
      title='&image_attribute;'
      xmlns='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'
      ondialogaccept='return;'
      ondialogcancel='return;'>

   <grid id="contents">

      <columns>
         <column/>
         <column flex='1'/>
      </columns>
      <rows>
         <row>
            <vbox>
               <spacer flex="1"/>

               <description value='&album;'/>
               <spacer flex="1"/>

            </vbox>
            <vbox>
               <spacer flex="1"/>

               <menulist tabindex='1' id="album_list">

                  <menupopup>
                     <menuitem label="1"/>
                     <menuitem label="2"/>
                     <menuitem label="3"/>
                     <menuitem label="4"/>
                     <menuitem label="5"/>
                  </menupopup>

               </menulist>

               <spacer flex="1"/>

            </vbox>
         </row>
      </rows>
   </grid>

</dialog>


 また以下の URL からテスト用の拡張本体をダウンロード可能です。
    http://dl.getdropbox.com/u/216524/test.xpi

 以上、お智慧を拝借できれば幸いです。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2009年9月15日(火) 11:03 
オフライン

登録日時: 2007年1月14日(日) 14:24
記事: 138
お住まい: Osaka,Japan
 とりあえず、作成中の拡張に対して、drop イベントハンドラ内ではダイアログボックスを開かない、という回避策を採りました。そのため、この質問は危急のものではなくなりました。

# 後学のため、もしよろしければ解決方法を後教示賜われば幸いです。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2009年9月22日(火) 00:09 
オフライン
Moderator

登録日時: 2007年5月03日(木) 01:11
記事: 92
お住まい: 東京
Windows VistaのFirefox 3.5で試した限り、特に問題なく動いているようです。
理屈の上では問題が起こりえない部分なので、Firefoxのバグだと思いますが……(ひょっとしてLinux限定?)
ありがちな回避方法としては、onDrop()のタイミングでwindow.setTimeout()を呼んで、数ミリ秒後にダイアログを開かせるとかそんな感じでしょうか。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2009年9月22日(火) 10:06 
オフライン

登録日時: 2007年1月14日(日) 14:24
記事: 138
お住まい: Osaka,Japan
Piroさん さんが書きました:
Windows VistaのFirefox 3.5で試した限り、特に問題なく動いているようです。

 Vista の Firefox3.5 で動いてますか?つい先ほど友人に Vista マシンを借りてテストしてみたところ、Drop イベントをひらうことができていません。toolkit 内で "tranceferData.first is null" というエラーが発生しています。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 4 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[34人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean