// 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
\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