From a031d213d2f1d9f7550dd8c5f906121ae75d06f7 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Fri, 2 Feb 2024 21:53:39 -0800 Subject: [PATCH 1/2] Fix RestoreWindow pointer type --- BrowserSelect/ForegroundAgent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BrowserSelect/ForegroundAgent.cs b/BrowserSelect/ForegroundAgent.cs index 90c69d7..dc5357d 100644 --- a/BrowserSelect/ForegroundAgent.cs +++ b/BrowserSelect/ForegroundAgent.cs @@ -34,7 +34,7 @@ class ForegroundAgent /// also gives said window focus (setForegroundWindow) /// /// hWnd of window to be restored - public static void RestoreWindow(int hwnd) + public static void RestoreWindow(long hwnd) { var hWnd = new IntPtr(hwnd); From 6433b5cbe0c1fdd25257c39f1faef13c9eb94b34 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Fri, 2 Feb 2024 21:58:26 -0800 Subject: [PATCH 2/2] Optimize "FindChromeProfiles" Previously, this function scans all subdirectory files recursively. It's hitting "permissoin denied" errors for random files, on my machine. Change it to only look at the top-level directories. This should also improve performance significantly. --- BrowserSelect/Browser.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/BrowserSelect/Browser.cs b/BrowserSelect/Browser.cs index f6dc422..0ca6749 100644 --- a/BrowserSelect/Browser.cs +++ b/BrowserSelect/Browser.cs @@ -177,10 +177,11 @@ private static string GetChromeProfileName(string FullProfilePath) private static List FindChromeProfiles(string ChromeUserDataDir, string IconFilename) { List Profiles = new List(); - var ProfileDirs = Directory.GetFiles(ChromeUserDataDir, IconFilename, SearchOption.AllDirectories).Select(Path.GetDirectoryName); - foreach (var Profile in ProfileDirs) + var TopLevelDirs = Directory.GetDirectories(ChromeUserDataDir); + foreach (var Dir in TopLevelDirs) { - Profiles.Add(Profile.Substring(ChromeUserDataDir.Length + 1)); + var BaseName = Dir.Substring(ChromeUserDataDir.Length + 1); + if (File.Exists(Dir + "\\" + IconFilename)) { Profiles.Add(BaseName); } } return Profiles; }