Browse Source

Bug 941: When creating WinSCP shortcut, make it use the same configuration as creating instance

https://winscp.net/tracker/941

Source commit: c3cba5876f81a1caba9e65563933496e38f45e89
Martin Prikryl 5 years ago
parent
commit
adfdc17622
3 changed files with 27 additions and 1 deletions
  1. 15 0
      source/core/Configuration.cpp
  2. 1 0
      source/core/Configuration.h
  3. 11 1
      source/windows/Tools.cpp

+ 15 - 0
source/core/Configuration.cpp

@@ -1240,6 +1240,21 @@ UnicodeString __fastcall TConfiguration::GetAutomaticIniFileStorageName(bool Rea
   }
 }
 //---------------------------------------------------------------------------
+UnicodeString __fastcall TConfiguration::GetIniFileParamValue()
+{
+  UnicodeString Result;
+  if (Storage == stNul)
+  {
+    Result = INI_NUL;
+  }
+  // See the comment in GetIniFileStorageName
+  else if ((Storage == stIniFile) && !FIniFileStorageName.IsEmpty())
+  {
+    Result = FIniFileStorageName;
+  }
+  return Result;
+}
+//---------------------------------------------------------------------------
 UnicodeString __fastcall TConfiguration::GetIniFileStorageName(bool ReadingOnly)
 {
   UnicodeString Result;

+ 1 - 0
source/core/Configuration.h

@@ -220,6 +220,7 @@ public:
   void __fastcall SetDefaultStorage();
   UnicodeString __fastcall GetAutomaticIniFileStorageName(bool ReadingOnly);
   UnicodeString __fastcall GetDefaultIniFileExportPath();
+  UnicodeString __fastcall GetIniFileParamValue();
   void __fastcall Export(const UnicodeString & FileName);
   void __fastcall Import(const UnicodeString & FileName);
   void __fastcall CleanupConfiguration();

+ 11 - 1
source/windows/Tools.cpp

@@ -600,9 +600,19 @@ IShellLink * __fastcall CreateDesktopShortCut(const UnicodeString & Name,
 }
 //---------------------------------------------------------------------------
 IShellLink * __fastcall CreateAppDesktopShortCut(
-  const UnicodeString & Name, const UnicodeString & Params, const UnicodeString & Description,
+  const UnicodeString & Name, const UnicodeString & AParams, const UnicodeString & Description,
   int SpecialFolder, int IconIndex, bool Return)
 {
+  UnicodeString ParamValue = Configuration->GetIniFileParamValue();
+
+  UnicodeString Params;
+  if (!ParamValue.IsEmpty())
+  {
+    Params = TProgramParams::FormatSwitch(INI_SWITCH) + L"=" + AddQuotes(ParamValue);
+  }
+
+  AddToList(Params, AParams, L" ");
+
   return CreateDesktopShortCut(Name, Application->ExeName, Params, Description, SpecialFolder, IconIndex, Return);
 }
 //---------------------------------------------------------------------------