Browse Source

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 months ago
parent
commit
9c67f7d339

+ 1 - 1
source/forms/Copy.cpp

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

+ 1 - 1
source/forms/CopyLocal.cpp

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

+ 1 - 1
source/forms/FullSynchronize.cpp

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

+ 1 - 1
source/forms/Synchronize.cpp

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

+ 4 - 20
source/windows/VCLCommon.cpp

@@ -1356,8 +1356,7 @@ bool __fastcall ReleaseAsModal(TForm * Form, void *& Storage)
   return Result;
   return Result;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-bool __fastcall SelectDirectory(UnicodeString & Path, const UnicodeString Prompt,
-  bool PreserveFileName)
+bool SelectDirectory(UnicodeString & ADirectory, const UnicodeString & Prompt)
 {
 {
   bool Result;
   bool Result;
   unsigned int ErrorMode;
   unsigned int ErrorMode;
@@ -1365,27 +1364,12 @@ bool __fastcall SelectDirectory(UnicodeString & Path, const UnicodeString Prompt
 
 
   try
   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;
     TSelectDirExtOpts Opts = TSelectDirExtOpts() << sdNewUI;
     Result = SelectDirectory(Prompt, EmptyStr, Directory, Opts);
     Result = SelectDirectory(Prompt, EmptyStr, Directory, Opts);
     if (Result)
     if (Result)
     {
     {
-      Path = Directory;
-      if (!FileName.IsEmpty())
-      {
-        Path = IncludeTrailingBackslash(Path) + FileName;
-      }
+      ADirectory = Directory;
     }
     }
   }
   }
   __finally
   __finally
@@ -1400,7 +1384,7 @@ void SelectDirectoryForEdit(THistoryComboBox * Edit)
 {
 {
   UnicodeString OriginalDirectory = ExpandEnvironmentVariables(Edit->Text);
   UnicodeString OriginalDirectory = ExpandEnvironmentVariables(Edit->Text);
   UnicodeString Directory = OriginalDirectory;
   UnicodeString Directory = OriginalDirectory;
-  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY), true) &&
+  if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY)) &&
       !SamePaths(OriginalDirectory, Directory))
       !SamePaths(OriginalDirectory, Directory))
   {
   {
     Edit->Text = 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);
 void __fastcall HideAsModal(TForm * Form, void *& Storage);
 bool __fastcall ReleaseAsModal(TForm * Form, void *& Storage);
 bool __fastcall ReleaseAsModal(TForm * Form, void *& Storage);
 bool __fastcall IsMainFormLike(TCustomForm * Form);
 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);
 void SelectDirectoryForEdit(THistoryComboBox * Edit);
 enum TListViewCheckAll { caCheck, caUncheck, caToggle };
 enum TListViewCheckAll { caCheck, caUncheck, caToggle };
 bool __fastcall ListViewAnyChecked(TListView * ListView, bool Checked = true);
 bool __fastcall ListViewAnyChecked(TListView * ListView, bool Checked = true);