From 273a41207859b7c05e2c00881d4ecfa5b3274ac6 Mon Sep 17 00:00:00 2001 From: Christos Maragkos Date: Wed, 10 Jun 2026 22:15:31 +0300 Subject: [PATCH 1/4] Retain '..' directory after scan failure --- Assets/Scripts/Game/UserInterface/FolderBrowser.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs index db133df9b6..e48cbe62c3 100644 --- a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs +++ b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs @@ -240,7 +240,8 @@ void RefreshFolders() { folders.Clear(); folderList.ClearItems(); - return; + if (currentPath != drives[driveList.SelectedIndex]) + folderList.AddItem(parentDirectory); } } From a588fec03428c632d40dc275b2621905174f1610 Mon Sep 17 00:00:00 2001 From: Christos Maragkos Date: Wed, 10 Jun 2026 22:15:45 +0300 Subject: [PATCH 2/4] Log directory scan exception info --- Assets/Scripts/Game/UserInterface/FolderBrowser.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs index e48cbe62c3..84d4dc1345 100644 --- a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs +++ b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs @@ -236,8 +236,9 @@ void RefreshFolders() folderScroller.ScrollIndex = 0; folderList.SelectedIndex = 0; } - catch + catch (Exception e) { + Debug.LogErrorFormat("FolderBrowser: Failed to enumerate '{0}': {1}", currentPath, e.Message); folders.Clear(); folderList.ClearItems(); if (currentPath != drives[driveList.SelectedIndex]) From e75186e6005ecab032778bd8e6e4c19a08601711 Mon Sep 17 00:00:00 2001 From: Christos Maragkos Date: Wed, 10 Jun 2026 22:20:06 +0300 Subject: [PATCH 3/4] More robust scanning to catch all errors --- .../Scripts/Game/UserInterface/FolderBrowser.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs index 84d4dc1345..3efd6edc1c 100644 --- a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs +++ b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs @@ -222,12 +222,19 @@ void RefreshFolders() foreach (var directory in directoryList) { - DirectoryInfo info = new DirectoryInfo(directory); - if (showHiddenFilesCheck.IsChecked || (info.Attributes & FileAttributes.Hidden) == 0) + try { - string name = Path.GetFileName(directory); - folders.Add(name); - folderList.AddItem(name); + DirectoryInfo info = new DirectoryInfo(directory); + if (showHiddenFilesCheck.IsChecked || (info.Attributes & FileAttributes.Hidden) == 0) + { + string name = Path.GetFileName(directory); + folders.Add(name); + folderList.AddItem(name); + } + } + catch (Exception e) + { + Debug.LogWarningFormat("FolderBrowser: Skipping inaccessible directory '{0}': {1}", directory, e.Message); } } From 612d66539f5bed7e4b65b1a6628cfd75f3c2737e Mon Sep 17 00:00:00 2001 From: Christos Maragkos Date: Wed, 10 Jun 2026 22:31:37 +0300 Subject: [PATCH 4/4] Add in-menu error message when an exception is caught --- Assets/Scripts/Game/UserInterface/FolderBrowser.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs index 3efd6edc1c..0163f43e3b 100644 --- a/Assets/Scripts/Game/UserInterface/FolderBrowser.cs +++ b/Assets/Scripts/Game/UserInterface/FolderBrowser.cs @@ -250,6 +250,7 @@ void RefreshFolders() folderList.ClearItems(); if (currentPath != drives[driveList.SelectedIndex]) folderList.AddItem(parentDirectory); + folderList.AddItem("(could not read directory)"); } }