Selaa lähdekoodia

Bug 1734: Optionally do not distinguish multiple sessions opened to the same site by current path + By default truncate too long directory names in session tab

https://winscp.net/tracker/1734

Source commit: 78506da7a5220690d92c7db299615dffda919d0b
Martin Prikryl 5 vuotta sitten
vanhempi
sitoutus
1a6ad23f92

+ 8 - 1
source/windows/TerminalManager.cpp

@@ -1390,7 +1390,8 @@ UnicodeString __fastcall TTerminalManager::GetTerminalShortPath(TTerminal * Term
 UnicodeString __fastcall TTerminalManager::GetTerminalTitle(TTerminal * Terminal, bool Unique)
 {
   UnicodeString Result = Terminal->SessionData->SessionName;
-  if (Unique)
+  if (Unique &&
+      (WinConfiguration->SessionTabNameFormat != stnfNone))
   {
     int Index = IndexOf(Terminal);
     // not for background transfer sessions and disconnected sessions
@@ -1406,6 +1407,12 @@ UnicodeString __fastcall TTerminalManager::GetTerminalTitle(TTerminal * Terminal
           UnicodeString Path = GetTerminalShortPath(Terminal);
           if (!Path.IsEmpty())
           {
+            const int MaxPathLen = 16;
+            if ((WinConfiguration->SessionTabNameFormat == stnfShortPathTrunc) &&
+                (Path.Length() > MaxPathLen))
+            {
+              Path = Path.SubString(1, MaxPathLen - 2) + Ellipsis;
+            }
             Result = FORMAT(L"%s (%s)", (Result, Path));
           }
           break;

+ 2 - 0
source/windows/WinConfiguration.cpp

@@ -578,6 +578,7 @@ void __fastcall TWinConfiguration::Default()
   FAutoSaveWorkspacePasswords = false;
   FAutoWorkspace = L"";
   FPathInCaption = picShort;
+  FSessionTabNameFormat = stnfShortPathTrunc;
   FMinimizeToTray = false;
   FMinimizeToTrayOnce = false;
   FBalloonNotifications = true;
@@ -984,6 +985,7 @@ THierarchicalStorage * TWinConfiguration::CreateScpStorage(bool & SessionList)
     KEY(Bool,     AutoSaveWorkspacePasswords); \
     KEY(String,   AutoWorkspace); \
     KEY(Integer,  PathInCaption); \
+    KEY(Integer,  SessionTabNameFormat); \
     KEY(Bool,     MinimizeToTray); \
     KEY(Bool,     BalloonNotifications); \
     KEY(Integer,  NotificationsTimeout); \

+ 4 - 0
source/windows/WinConfiguration.h

@@ -341,6 +341,7 @@ class TBookmarks;
 class TBookmarkList;
 class TCustomCommandList;
 enum TPathInCaption { picShort, picFull, picNone };
+enum TSessionTabNameFormat { stnfNone, stnfShortPath, stnfShortPathTrunc };
 // constants must be compatible with legacy CopyOnDoubleClick
 enum TDoubleClickAction { dcaOpen = 0, dcaCopy = 1, dcaEdit = 2 };
 //---------------------------------------------------------------------------
@@ -410,6 +411,7 @@ private:
   bool FAutoSaveWorkspacePasswords;
   UnicodeString FAutoWorkspace;
   TPathInCaption FPathInCaption;
+  TSessionTabNameFormat FSessionTabNameFormat;
   bool FMinimizeToTray;
   bool FMinimizeToTrayOnce;
   bool FBalloonNotifications;
@@ -517,6 +519,7 @@ private:
   void __fastcall SetAutoSaveWorkspacePasswords(bool value);
   void __fastcall SetAutoWorkspace(UnicodeString value);
   void __fastcall SetPathInCaption(TPathInCaption value);
+  void __fastcall SetSessionTabNameFormat(TSessionTabNameFormat value);
   void __fastcall SetMinimizeToTray(bool value);
   bool __fastcall GetMinimizeToTray();
   void __fastcall SetBalloonNotifications(bool value);
@@ -714,6 +717,7 @@ public:
   __property bool AutoSaveWorkspacePasswords = { read = FAutoSaveWorkspacePasswords, write = SetAutoSaveWorkspacePasswords };
   __property UnicodeString AutoWorkspace = { read = FAutoWorkspace, write = SetAutoWorkspace };
   __property TPathInCaption PathInCaption = { read = FPathInCaption, write = SetPathInCaption };
+  __property TSessionTabNameFormat SessionTabNameFormat = { read = FSessionTabNameFormat, write = FSessionTabNameFormat };
   __property bool MinimizeToTray = { read = GetMinimizeToTray, write = SetMinimizeToTray };
   __property bool BalloonNotifications = { read = FBalloonNotifications, write = SetBalloonNotifications };
   __property unsigned int NotificationsTimeout = { read = FNotificationsTimeout, write = SetNotificationsTimeout };