}\r
else\r
{\r
- wxArrayString asFiles;\r
if (nMode == 1)\r
{\r
// コマンドを実行。\r
- asFiles.Add(swInfo.fnDestinationDirectory.GetPathWithSep() + wxFileName(mkDlg.files[0], wxPATH_DOS).GetFullName());\r
+ wxString szTempFile = swInfo.fnDestinationDirectory.GetPathWithSep() + wxFileName(mkDlg.files[0], wxPATH_DOS).GetFullName();\r
if (tpi.nErrorCode == TPI_ERROR_SUCCESS)\r
{\r
#ifdef __LINUX__\r
// Linuxでは引用符で囲む必要がある。\r
- ::wxExecute(ftFile->GetOpenCommand(QuoteString(asFiles[0])), wxEXEC_SYNC);\r
+ ::wxExecute(ftFile->GetOpenCommand(QuoteString(szTempFile)), wxEXEC_SYNC);\r
#else\r
- ::wxExecute(ftFile->GetOpenCommand(asFiles[0]), wxEXEC_SYNC);\r
+ ::wxExecute(ftFile->GetOpenCommand(szTempFile), wxEXEC_SYNC);\r
#endif\r
}\r
+\r
+ ::wxRemoveFile(szTempFile);\r
+ ::wxRmdir(swInfo.fnDestinationDirectory.GetPath());\r
}\r
else\r
{\r
// 展開対象を決定。\r
+ wxArrayString asFiles;\r
myFileDataObject * objFile = new myFileDataObject();\r
- objFile->szTempDir = swInfo.fnDestinationDirectory.GetFullPath();\r
+ objFile->szTempDir = nMode == 3 ? swInfo.fnDestinationDirectory.GetPath() : swInfo.fnDestinationDirectory.GetFullPath();\r
for (size_t i = 0; i < mkDlg.files.GetCount(); i++)\r
{\r
wxString szFileName = swInfo.fnDestinationDirectory.GetPathWithSep() + wxFileName(mkDlg.files[i], wxPATH_DOS).GetFullName();\r
- if (nMode != 3)\r
+ if (nMode == 3)\r
+ {\r
+ asFiles.Add(szFileName);\r
+ }\r
+ else\r
{\r
// リストに追加。\r
objFile->AddFile(szFileName);\r
}\r
- asFiles.Add(szFileName);\r
}\r
if (nMode == 3)\r
{\r
- objFile->AddFile(swInfo.fnDestinationDirectory.GetPath());\r
+ objFile->AddFile(objFile->szTempDir);\r
}\r
\r
if (nMode == 4)\r
\r
// DnD開始。\r
wxDropSource dropSource(* objFile, this);\r
- wxDragResult drResult = dropSource.DoDragDrop(wxDrag_DefaultMove);\r
+ wxDragResult drResult = dropSource.DoDragDrop();\r
if (drResult != wxDragCancel && drResult != wxDragNone && drResult != wxDragMove)\r
{\r
#ifdef __LINUX__\r
#endif\r
}\r
this->SetDropTarget(new myFileDropTarget(this));\r
+\r
+ // ディレクトリDnDのときは、先にディレクトリの中のファイルを消しておく。\r
+ if (nMode == 3)\r
+ {\r
+ for (size_t i = 0; i < asFiles.GetCount(); i++)\r
+ {\r
+ ::wxRemoveFile(asFiles[i]);\r
+ }\r
+ }\r
+\r
delete objFile;\r
}\r
}\r