瀏覽代碼

Bug 1881: Failure after using files from a disconnected session (for example saving an edited file)

https://winscp.net/tracker/1881
(cherry picked from commit 01c9c5f5838e890cf94f189531ad2a527be5093f)

# Conflicts:
#	source/forms/CustomScpExplorer.h

Source commit: e59a2e7039c87f05d1686bec622a6145b23af9ea
Martin Prikryl 5 年之前
父節點
當前提交
c8d7f0e3d3
共有 2 個文件被更改,包括 11 次插入4 次删除
  1. 10 4
      source/forms/CustomScpExplorer.cpp
  2. 1 0
      source/forms/CustomScpExplorer.h

+ 10 - 4
source/forms/CustomScpExplorer.cpp

@@ -4851,6 +4851,7 @@ void __fastcall TCustomScpExplorerForm::DisconnectSession()
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 void __fastcall TCustomScpExplorerForm::TerminalDisconnected()
 void __fastcall TCustomScpExplorerForm::TerminalDisconnected()
 {
 {
+  DetachTerminal(Terminal);
   RemoteDirView->Terminal = Terminal;
   RemoteDirView->Terminal = Terminal;
   UpdateRemotePathComboBox(false);
   UpdateRemotePathComboBox(false);
   UpdateControls();
   UpdateControls();
@@ -6544,22 +6545,27 @@ void __fastcall TCustomScpExplorerForm::ExecuteCurrentFileWith(bool OnFocused)
   }
   }
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-void __fastcall TCustomScpExplorerForm::TerminalRemoved(TObject * Sender)
+void __fastcall TCustomScpExplorerForm::DetachTerminal(TObject * ATerminal)
 {
 {
-  FEditorManager->ProcessFiles(FileTerminalRemoved, Sender);
+  FEditorManager->ProcessFiles(FileTerminalRemoved, ATerminal);
 
 
-  if (FFileFindTerminal == Sender)
+  if (FFileFindTerminal == ATerminal)
   {
   {
     FFileFindTerminal = NULL;
     FFileFindTerminal = NULL;
     HideFileFindDialog();
     HideFileFindDialog();
   }
   }
 
 
-  if (FClipboardTerminal == Sender)
+  if (FClipboardTerminal == ATerminal)
   {
   {
     ClipboardClear(); // implies ClipboardStop
     ClipboardClear(); // implies ClipboardStop
   }
   }
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
+void __fastcall TCustomScpExplorerForm::TerminalRemoved(TObject * Sender)
+{
+  DetachTerminal(Sender);
+}
+//---------------------------------------------------------------------------
 void __fastcall TCustomScpExplorerForm::FileTerminalRemoved(const UnicodeString FileName,
 void __fastcall TCustomScpExplorerForm::FileTerminalRemoved(const UnicodeString FileName,
   TEditedFileData * Data, TObject * /*Token*/, void * Arg)
   TEditedFileData * Data, TObject * /*Token*/, void * Arg)
 {
 {

+ 1 - 0
source/forms/CustomScpExplorer.h

@@ -690,6 +690,7 @@ protected:
   void __fastcall CenterReconnectToolbar();
   void __fastcall CenterReconnectToolbar();
   void __fastcall DoOpenFolderOrWorkspace(const UnicodeString & Name, bool ConnectFirstTerminal);
   void __fastcall DoOpenFolderOrWorkspace(const UnicodeString & Name, bool ConnectFirstTerminal);
   virtual void __fastcall ThemeChanged();
   virtual void __fastcall ThemeChanged();
+  void __fastcall DetachTerminal(TObject * ATerminal);
 
 
 public:
 public:
   virtual __fastcall ~TCustomScpExplorerForm();
   virtual __fastcall ~TCustomScpExplorerForm();