|
|
@@ -3891,24 +3891,37 @@ bool __fastcall TCustomScpExplorerForm::RemoteTransferDialog(TTerminal *& Sessio
|
|
|
TStrings * FileList, UnicodeString & Target, UnicodeString & FileMask, bool & DirectCopy,
|
|
|
bool NoConfirmation, bool Move)
|
|
|
{
|
|
|
- if (RemoteDriveView->DropTarget != NULL)
|
|
|
+ DebugAssert(Terminal != NULL);
|
|
|
+ // update Terminal->StateData->RemoteDirectory
|
|
|
+ UpdateTerminal(Terminal);
|
|
|
+
|
|
|
+ if (Session == NULL)
|
|
|
{
|
|
|
- Target = RemoteDriveView->NodePathName(RemoteDriveView->DropTarget);
|
|
|
+ Session = TTerminalManager::Instance()->ActiveTerminal;
|
|
|
}
|
|
|
- else if (RemoteDirView->DropTarget != NULL)
|
|
|
+
|
|
|
+ if (Session == TTerminalManager::Instance()->ActiveTerminal)
|
|
|
{
|
|
|
- DebugAssert(RemoteDirView->ItemIsDirectory(RemoteDirView->DropTarget));
|
|
|
- Target = RemoteDirView->ItemFullFileName(RemoteDirView->DropTarget);
|
|
|
+ if (RemoteDriveView->DropTarget != NULL)
|
|
|
+ {
|
|
|
+ Target = RemoteDriveView->NodePathName(RemoteDriveView->DropTarget);
|
|
|
+ }
|
|
|
+ else if (RemoteDirView->DropTarget != NULL)
|
|
|
+ {
|
|
|
+ DebugAssert(RemoteDirView->ItemIsDirectory(RemoteDirView->DropTarget));
|
|
|
+ Target = RemoteDirView->ItemFullFileName(RemoteDirView->DropTarget);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Target = RemoteDirView->Path;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- Target = RemoteDirView->Path;
|
|
|
+ TManagedTerminal * ManagedTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(Session));
|
|
|
+ Target = ManagedTerminal->StateData->RemoteDirectory;
|
|
|
}
|
|
|
|
|
|
- if (Session == NULL)
|
|
|
- {
|
|
|
- Session = TTerminalManager::Instance()->ActiveTerminal;
|
|
|
- }
|
|
|
Target = UnixIncludeTrailingBackslash(Target);
|
|
|
if (FileList->Count == 1)
|
|
|
{
|
|
|
@@ -3930,9 +3943,6 @@ bool __fastcall TCustomScpExplorerForm::RemoteTransferDialog(TTerminal *& Sessio
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- DebugAssert(Terminal != NULL);
|
|
|
- // update Terminal->StateData->RemoteDirectory
|
|
|
- UpdateTerminal(Terminal);
|
|
|
TStrings * Sessions = TTerminalManager::Instance()->TerminalList;
|
|
|
TStrings * Directories = new TStringList;
|
|
|
try
|