소스 검색

Bug fix: When the local path specified on Open directory/Location profile dialog is not existing, when browsing for a new path, the trailing part of the nonexisting path was appended to the new path

Additionally, completely dropping the PreserveFileName. Even from Copy dialog, where it might had some use in the past, but now it does seem to be doing anything useful. The Directory includes a trailing backslash, so there's no "filename".

Source commit: ddde0fd680ac03a120e3df88f82767cb5382e44d
Martin Prikryl 3 달 전
부모
커밋
9c67f7d339
6개의 변경된 파일9개의 추가작업 그리고 26개의 파일을 삭제
  1. 1 1
      source/forms/Copy.cpp
  2. 1 1
      source/forms/CopyLocal.cpp
  3. 1 1
      source/forms/FullSynchronize.cpp
  4. 1 1
      source/forms/Synchronize.cpp
  5. 4 20
      source/windows/VCLCommon.cpp
  6. 1 2
      source/windows/VCLCommon.h

+ 1 - 1
source/forms/Copy.cpp

@@ -478,7 +478,7 @@ void __fastcall TCopyDialog::LocalDirectoryBrowseButtonClick(
     ADirectory = Directory;
   }
 
-  if (SelectDirectory(ADirectory, LoadStr(SELECT_LOCAL_DIRECTORY), true))
+  if (SelectDirectory(ADirectory, LoadStr(SELECT_LOCAL_DIRECTORY)))
   {
     Directory = ADirectory;
     UpdateControls();

+ 1 - 1
source/forms/CopyLocal.cpp

@@ -149,7 +149,7 @@ void __fastcall TCopyLocalDialog::HelpButtonClick(TObject *)
 void __fastcall TCopyLocalDialog::LocalDirectoryBrowseButtonClick(TObject *)
 {
   UnicodeString ADirectory = GetDirectory();
-  if (SelectDirectory(ADirectory, LoadStr(SELECT_LOCAL_DIRECTORY), false))
+  if (SelectDirectory(ADirectory, LoadStr(SELECT_LOCAL_DIRECTORY)))
   {
     SetDirectoryAndFileMask(ADirectory, GetFileMask());
     UpdateControls();

+ 1 - 1
source/forms/FullSynchronize.cpp

@@ -313,7 +313,7 @@ void __fastcall TFullSynchronizeDialog::LocalDirectoryBrowseButtonClick(
       TObject * /*Sender*/)
 {
   UnicodeString Directory = LocalDirectoryEdit->Text;
-  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY), false))
+  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY)))
   {
     LocalDirectoryEdit->Text = Directory;
   }

+ 1 - 1
source/forms/Synchronize.cpp

@@ -280,7 +280,7 @@ void __fastcall TSynchronizeDialog::LocalDirectoryBrowseButtonClick(
       TObject * /*Sender*/)
 {
   UnicodeString Directory = LocalDirectoryEdit->Text;
-  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY), false))
+  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY)))
   {
     LocalDirectoryEdit->Text = Directory;
   }

+ 4 - 20
source/windows/VCLCommon.cpp

@@ -1356,8 +1356,7 @@ bool __fastcall ReleaseAsModal(TForm * Form, void *& Storage)
   return Result;
 }
 //---------------------------------------------------------------------------
-bool __fastcall SelectDirectory(UnicodeString & Path, const UnicodeString Prompt,
-  bool PreserveFileName)
+bool SelectDirectory(UnicodeString & ADirectory, const UnicodeString & Prompt)
 {
   bool Result;
   unsigned int ErrorMode;
@@ -1365,27 +1364,12 @@ bool __fastcall SelectDirectory(UnicodeString & Path, const UnicodeString Prompt
 
   try
   {
-    UnicodeString Directory;
-    UnicodeString FileName;
-    // We do not have any real use for the PreserveFileName
-    if (!PreserveFileName || DirectoryExists(ApiPath(Path)))
-    {
-      Directory = Path;
-    }
-    else
-    {
-      Directory = ExtractFilePath(Path);
-      FileName = ExtractFileName(Path);
-    }
+    UnicodeString Directory = ADirectory;
     TSelectDirExtOpts Opts = TSelectDirExtOpts() << sdNewUI;
     Result = SelectDirectory(Prompt, EmptyStr, Directory, Opts);
     if (Result)
     {
-      Path = Directory;
-      if (!FileName.IsEmpty())
-      {
-        Path = IncludeTrailingBackslash(Path) + FileName;
-      }
+      ADirectory = Directory;
     }
   }
   __finally
@@ -1400,7 +1384,7 @@ void SelectDirectoryForEdit(THistoryComboBox * Edit)
 {
   UnicodeString OriginalDirectory = ExpandEnvironmentVariables(Edit->Text);
   UnicodeString Directory = OriginalDirectory;
-  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY), true) &&
+  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY)) &&
       !SamePaths(OriginalDirectory, Directory))
   {
     Edit->Text = Directory;

+ 1 - 2
source/windows/VCLCommon.h

@@ -44,8 +44,7 @@ void __fastcall ShowAsModal(TForm * Form, void *& Storage, bool BringToFront = t
 void __fastcall HideAsModal(TForm * Form, void *& Storage);
 bool __fastcall ReleaseAsModal(TForm * Form, void *& Storage);
 bool __fastcall IsMainFormLike(TCustomForm * Form);
-bool __fastcall SelectDirectory(UnicodeString & Path, const UnicodeString Prompt,
-  bool PreserveFileName);
+bool SelectDirectory(UnicodeString & Path, const UnicodeString & Prompt);
 void SelectDirectoryForEdit(THistoryComboBox * Edit);
 enum TListViewCheckAll { caCheck, caUncheck, caToggle };
 bool __fastcall ListViewAnyChecked(TListView * ListView, bool Checked = true);