Browse Source

Bug fix: When dropping files on another session tab, the target path was not set to the working directory of that session.

Source commit: e019f013552fca4e9d50bfe8407cd068267d185d
Martin Prikryl 7 years ago
parent
commit
ee5b0dfaf2
1 changed files with 23 additions and 13 deletions
  1. 23 13
      source/forms/CustomScpExplorer.cpp

+ 23 - 13
source/forms/CustomScpExplorer.cpp

@@ -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