Răsfoiți Sursa

Bug 1505: Panel loses focus after a transfer initiated using Enter key or double-click

https://winscp.net/tracker/1505

Source commit: bfe52d5925f00a8f15acebe63360bfb84ee4fd47
Martin Prikryl 8 ani în urmă
părinte
comite
9ffb7a283f
1 a modificat fișierele cu 13 adăugiri și 3 ștergeri
  1. 13 3
      source/forms/CustomScpExplorer.cpp

+ 13 - 3
source/forms/CustomScpExplorer.cpp

@@ -4819,9 +4819,18 @@ void __fastcall TCustomScpExplorerForm::DoDirViewExecFile(TObject * Sender,
     {
       if (WinConfiguration->DoubleClickAction == dcaCopy)
       {
-        ExecuteFileOperation(foCopy,
-          (ADirView == DirView(osRemote) ? osRemote : osLocal),
-          true, !WinConfiguration->CopyOnDoubleClickConfirmation);
+        // To counter the lock in DirViewBusy (called from TCustomDirView.DoExecute)
+        UnlockWindow();
+        try
+        {
+          ExecuteFileOperation(foCopy,
+            (ADirView == DirView(osRemote) ? osRemote : osLocal),
+            true, !WinConfiguration->CopyOnDoubleClickConfirmation);
+        }
+        __finally
+        {
+          LockWindow();
+        }
         AllowExec = false;
       }
       else if (WinConfiguration->DoubleClickAction == dcaEdit)
@@ -9097,6 +9106,7 @@ void __fastcall TCustomScpExplorerForm::DirViewBusy(TObject * /*Sender*/, int Bu
     else
     {
       NonVisualDataModule->StartBusy();
+      // Will be countered for TCustomDirView.DoExecute in DoDirViewExecFile
       LockWindow();
     }
   }