diff --git a/Server/Forms/FrmFileManager.cs b/Server/Forms/FrmFileManager.cs index 35742060..e1d9498a 100644 --- a/Server/Forms/FrmFileManager.cs +++ b/Server/Forms/FrmFileManager.cs @@ -35,8 +35,25 @@ public FrmFileManager(Client c) private string GetAbsolutePath(string item) { + if (!string.IsNullOrEmpty(_currentDir) && _currentDir[0] == '/') + return Path.Combine(_currentDir, item + '/'); + return Path.GetFullPath(Path.Combine(_currentDir, item)); } + + private void NavigateUp() + { + if (!string.IsNullOrEmpty(_currentDir) && _currentDir[0] == '/') + { + if (_currentDir.LastIndexOf('/') > 0) + { + _currentDir = _currentDir.TrimEnd('/'); + SetCurrentDir(_currentDir.Remove(_currentDir.LastIndexOf('/') + 1)); + } + } + else + SetCurrentDir(GetAbsolutePath(@"..\")); + } private void FrmFileManager_Load(object sender, EventArgs e) { @@ -71,7 +88,7 @@ private void lstDirectory_DoubleClick(object sender, EventArgs e) switch (type) { case PathType.Back: - SetCurrentDir(Path.GetFullPath(Path.Combine(_currentDir, @"..\"))); + NavigateUp(); RefreshDirectory(); break; case PathType.Directory: