OSDN Git Service

DnDからではヘッダ暗号化書庫や分割書庫が開けない場合があったバグを修正。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Fri, 26 Nov 2010 11:29:26 +0000 (11:29 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Fri, 26 Nov 2010 11:29:26 +0000 (11:29 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@451 9df91469-1e22-0410-86e7-ea8537beb833

doc/history.html
src/lychee/cls_filedroptarget.cpp
src/lychee/frm_main.cpp

index 081d7e8..6edf126 100644 (file)
       <ul>\r
        <li class="chg">Linuxでは属性の部分にパーミッションを表示するよう変更。</li>\r
        <li class="chg">格納パスにカレントディレクトリが含まれている場合は、それを除いて表示するよう変更。</li>\r
+       <li class="fix">DnDからではヘッダ暗号化書庫や分割書庫が開けない場合があったバグを修正。</li>\r
+      </ul>\r
+     </dd>\r
+     <dt>rarArc</dt>\r
+     <dd>\r
+      <ul>\r
+       <li class="chg">UnRAR.dllの仕様変更に追随。</li>\r
       </ul>\r
      </dd>\r
     </dl>\r
index 78c75a3..3214c77 100644 (file)
@@ -37,47 +37,33 @@ myFileDropTarget::myFileDropTarget(MainFrame * mainFrame)
 // Event handler.\r
 //******************************************************************************\r
 \r
-bool myFileDropTarget::OnDropFiles(wxCoord, wxCoord, const wxArrayString & asFiles)\r
-{\r
-#if wxCHECK_VERSION(2, 9, 0)\r
-       wxThreadEvent * e;\r
-#else\r
-       wxCommandEvent * e;\r
+#if ! wxCHECK_VERSION(2, 9, 0)\r
+#define wxThreadEvent wxCommandEvent\r
 #endif\r
 \r
+bool myFileDropTarget::OnDropFiles(wxCoord, wxCoord, const wxArrayString & asFiles)\r
+{\r
        // ファイルが存在するか確認。\r
+       wxThreadEvent * e;\r
+       this->as = asFiles;\r
        if (asFiles.GetCount() == 1 && ::wxFileExists(asFiles[0]))\r
        {\r
-               // 対応しているかどうか確認。\r
-               wxULongLong_t llFileCount = 0;\r
-               if (this->mainFrame->LoadTPI(asFiles[0], & llFileCount))\r
-               {\r
-                       // 書庫を開く。\r
-#if wxCHECK_VERSION(2, 9, 0)\r
-                       e = new wxThreadEvent(wxEVT_COMMAND_MENU_SELECTED, XRCID("Arc_Open"));\r
-#else\r
-                       e = new wxCommandEvent(wxEVT_COMMAND_MENU_SELECTED, XRCID("Arc_Open"));\r
-#endif\r
-                       e->SetInt(2);\r
-                       e->SetExtraLong((long) llFileCount);\r
-                       this->mainFrame->fnArchive = wxFileName(asFiles[0]);\r
+               // 書庫を開く。\r
+               e = new wxThreadEvent(wxEVT_COMMAND_MENU_SELECTED, XRCID("Arc_Open"));\r
+               e->SetClientData(& this->as);\r
+               e->SetInt(2);\r
+               this->mainFrame->fnArchive = wxFileName(asFiles[0]);\r
 #if wxCHECK_VERSION(2, 9, 0)\r
-                       ::wxQueueEvent(this->mainFrame, e);\r
+               ::wxQueueEvent(this->mainFrame, e);\r
 #else\r
-                       this->mainFrame->OnArcOpen(* e);\r
-                       delete e;\r
+               this->mainFrame->OnArcOpen(* e);\r
+               delete e;\r
 #endif\r
-                       return true;\r
-               }\r
+               return true;\r
        }\r
 \r
        // 対応していない場合は書庫の作成を試みる。\r
-       this->as = asFiles;\r
-#if wxCHECK_VERSION(2, 9, 0)\r
        e = new wxThreadEvent(wxEVT_COMMAND_MENU_SELECTED, XRCID("Arc_Create"));\r
-#else\r
-       e = new wxCommandEvent(wxEVT_COMMAND_MENU_SELECTED, XRCID("Arc_Create"));\r
-#endif\r
        e->SetClientData(& this->as);\r
 #if wxCHECK_VERSION(2, 9, 0)\r
        ::wxQueueEvent(this->mainFrame, e);\r
index 345b901..9a5790d 100644 (file)
@@ -337,12 +337,16 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
 \r
        // DnD以外で書庫を開く場合、TPIを読み込み。\r
        TPI_PROCESSINFO piInfo;\r
-       piInfo.fiInfo.nUnpackedSize = e.GetExtraLong();\r
-       if (nMode != 2 && ! this->LoadTPI(this->fnArchive.GetFullPath(), & piInfo.fiInfo.nUnpackedSize))\r
+       if (! this->LoadTPI(this->fnArchive.GetFullPath(), & piInfo.fiInfo.nUnpackedSize))\r
        {\r
                procDlg.Show(false);\r
                tpi.FreeLibrary();\r
-               if (this->IsShown())\r
+               if (nMode == 2)\r
+               {\r
+                       // DnDの場合は書庫を作成する。\r
+                       this->OnArcCreate(e);\r
+               }\r
+               else if (this->IsShown())\r
                {\r
                        wxBell();\r
                        this->statusbar->SetStatusText(_("No plug-in supporting this archive was found!"), 4);\r