瀏覽代碼

Bug fix: When reattaching edited file to re-connection session, the file was always attached to the current session instead of the possibly non-active re-connected session

Source commit: 549914d12f07734c4eac79bc5b65a6977aeb20f7
Martin Prikryl 3 年之前
父節點
當前提交
b1455f0283
共有 3 個文件被更改,包括 8 次插入8 次删除
  1. 4 4
      source/forms/CustomScpExplorer.cpp
  2. 3 3
      source/windows/TerminalManager.cpp
  3. 1 1
      source/windows/TerminalManager.h

+ 4 - 4
source/forms/CustomScpExplorer.cpp

@@ -3874,7 +3874,7 @@ void __fastcall TCustomScpExplorerForm::ExecutedFileChanged(
       UnicodeString EditInactiveSessionReopenRejectedCounter = L"EditInactiveSessionReopenRejected";
       if (Data->Terminal == NULL)
       {
-        TTerminal * SameSiteTerminal = Manager->FindActiveTerminalForSite(Data->SessionData);
+        TManagedTerminal * SameSiteTerminal = Manager->FindActiveTerminalForSite(Data->SessionData);
         if (SameSiteTerminal != NULL)
         {
           UnicodeString Message =
@@ -3882,9 +3882,9 @@ void __fastcall TCustomScpExplorerForm::ExecutedFileChanged(
               (FileNameOnly, Data->SessionName, FileNameOnly));
           if (MessageDialog(Message, qtConfirmation, qaOK | qaCancel) == qaOK)
           {
-            Data->Terminal = Terminal;
-            Data->Queue = Manager->FindQueueForTerminal(Terminal);
-            Data->SessionName = Terminal->SessionData->SessionName;
+            Data->Terminal = SameSiteTerminal;
+            Data->Queue = Manager->FindQueueForTerminal(SameSiteTerminal);
+            Data->SessionName = SameSiteTerminal->SessionData->SessionName;
             // We might also overwrite session data
             Configuration->Usage->Inc(EditInactiveSessionReopenAcceptedCounter);
           }

+ 3 - 3
source/windows/TerminalManager.cpp

@@ -1874,12 +1874,12 @@ bool __fastcall TTerminalManager::IsActiveTerminalForSite(TTerminal * Terminal,
   return Result;
 }
 //---------------------------------------------------------------------------
-TTerminal * __fastcall TTerminalManager::FindActiveTerminalForSite(TSessionData * Data)
+TManagedTerminal * __fastcall TTerminalManager::FindActiveTerminalForSite(TSessionData * Data)
 {
-  TTerminal * Result = NULL;
+  TManagedTerminal * Result = NULL;
   for (int Index = 0; (Result == NULL) && (Index < Count); Index++)
   {
-    TTerminal * Terminal = Sessions[Index];
+    TManagedTerminal * Terminal = Sessions[Index];
     if (IsActiveTerminalForSite(Terminal, Data))
     {
       Result = Terminal;

+ 1 - 1
source/windows/TerminalManager.h

@@ -76,7 +76,7 @@ public:
   void __fastcall SaveWorkspace(TList * DataList);
   void __fastcall QueueStatusUpdated();
   bool __fastcall IsActiveTerminalForSite(TTerminal * Terminal, TSessionData * Data);
-  TTerminal * __fastcall FindActiveTerminalForSite(TSessionData * Data);
+  TManagedTerminal * __fastcall FindActiveTerminalForSite(TSessionData * Data);
   TTerminalQueue * __fastcall FindQueueForTerminal(TTerminal * Terminal);
   bool __fastcall UploadPublicKey(TTerminal * Terminal, TSessionData * Data, UnicodeString & FileName);
   UnicodeString GetPathForSessionTabName(const UnicodeString & Result);