From 583a0a0aa96875f36be2c06312664a8bbc4a6ad8 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:48:42 +1000 Subject: [PATCH] update sln picker color random logic --- .../Features/SlnPicker/RandomRecentSlnColours.cs | 10 +++++++--- src/SharpIDE.Godot/Features/SlnPicker/SlnPicker.tscn | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/SharpIDE.Godot/Features/SlnPicker/RandomRecentSlnColours.cs b/src/SharpIDE.Godot/Features/SlnPicker/RandomRecentSlnColours.cs index 38abb7c..8f4b519 100644 --- a/src/SharpIDE.Godot/Features/SlnPicker/RandomRecentSlnColours.cs +++ b/src/SharpIDE.Godot/Features/SlnPicker/RandomRecentSlnColours.cs @@ -33,10 +33,14 @@ public static class RandomRecentSlnColours { var hashBytes = MD5.HashData(Encoding.UTF8.GetBytes(filePath)); - // Convert first 4 bytes to an int - var hash = BitConverter.ToInt32(hashBytes, 0); + // Use all 16 bytes instead of just the first 4 + var hash = BitConverter.ToUInt32(hashBytes, 12) ^ + BitConverter.ToUInt32(hashBytes, 8) ^ + BitConverter.ToUInt32(hashBytes, 4) ^ + BitConverter.ToUInt32(hashBytes, 0); - var index = Math.Abs(hash) % AllColours.Count; + var random = new Random((int)hash); + var index = random.Next(AllColours.Count); return AllColours[index]; } } diff --git a/src/SharpIDE.Godot/Features/SlnPicker/SlnPicker.tscn b/src/SharpIDE.Godot/Features/SlnPicker/SlnPicker.tscn index 82bdf99..9634c58 100644 --- a/src/SharpIDE.Godot/Features/SlnPicker/SlnPicker.tscn +++ b/src/SharpIDE.Godot/Features/SlnPicker/SlnPicker.tscn @@ -107,6 +107,7 @@ layout_mode = 2 [node name="ScrollContainer" type="ScrollContainer" parent="VSplitContainer/Panel/MarginContainer2/VBoxContainer2"] layout_mode = 2 size_flags_vertical = 3 +follow_focus = true [node name="PreviousSlnsVBoxContainer" type="VBoxContainer" parent="VSplitContainer/Panel/MarginContainer2/VBoxContainer2/ScrollContainer"] unique_name_in_owner = true