From dc829334a1b6611f8518d5fa6518f9e498d4de66 Mon Sep 17 00:00:00 2001
From: Jamie Taylor <me@nekodex.net>
Date: Wed, 24 Aug 2022 22:19:32 +0900
Subject: [PATCH] Update for framework-side changes.

---
 osu.Game/Graphics/UserInterface/OsuTextBox.cs | 46 ++++++++++++-------
 1 file changed, 29 insertions(+), 17 deletions(-)

diff --git a/osu.Game/Graphics/UserInterface/OsuTextBox.cs b/osu.Game/Graphics/UserInterface/OsuTextBox.cs
index 2718465b9c..1be2b09ff8 100644
--- a/osu.Game/Graphics/UserInterface/OsuTextBox.cs
+++ b/osu.Game/Graphics/UserInterface/OsuTextBox.cs
@@ -56,6 +56,14 @@ namespace osu.Game.Graphics.UserInterface
         private bool selectionStarted;
         private double sampleLastPlaybackTime;
 
+        private enum SelectionSampleType
+        {
+            Character,
+            Word,
+            All,
+            Deselect
+        }
+
         public OsuTextBox()
         {
             Height = 40;
@@ -133,16 +141,19 @@ namespace osu.Game.Graphics.UserInterface
         {
             base.OnTextSelectionChanged(selectionType);
 
-            if (selectionType == TextSelectionType.Word)
+            switch (selectionType)
             {
-                if (!selectionStarted)
-                    playSelectSample(selectionType);
-                else
-                    playSelectSample();
-            }
-            else
-            {
-                playSelectSample(selectionType);
+                case TextSelectionType.Character:
+                    playSelectSample(SelectionSampleType.Character);
+                    break;
+
+                case TextSelectionType.Word:
+                    playSelectSample(selectionStarted ? SelectionSampleType.Character : SelectionSampleType.Word);
+                    break;
+
+                case TextSelectionType.All:
+                    playSelectSample(SelectionSampleType.All);
+                    break;
             }
 
             selectionStarted = true;
@@ -150,15 +161,16 @@ namespace osu.Game.Graphics.UserInterface
 
         protected override void OnTextDeselected()
         {
-            if (selectionStarted)
-                playSelectSample(TextSelectionType.Deselect);
+            base.OnTextDeselected();
+
+            if (!selectionStarted) return;
+
+            playSelectSample(SelectionSampleType.Deselect);
 
             selectionStarted = false;
-
-            base.OnTextDeselected();
         }
 
-        private void playSelectSample(TextSelectionType selectionType = TextSelectionType.Character)
+        private void playSelectSample(SelectionSampleType selectionType)
         {
             if (Time.Current < sampleLastPlaybackTime + 15) return;
 
@@ -167,15 +179,15 @@ namespace osu.Game.Graphics.UserInterface
 
             switch (selectionType)
             {
-                case TextSelectionType.All:
+                case SelectionSampleType.All:
                     channel = selectAllSample?.GetChannel();
                     break;
 
-                case TextSelectionType.Word:
+                case SelectionSampleType.Word:
                     channel = selectWordSample?.GetChannel();
                     break;
 
-                case TextSelectionType.Deselect:
+                case SelectionSampleType.Deselect:
                     channel = deselectSample?.GetChannel();
                     break;