From d7ca28a443113a541769d3768747fc8641a10faa Mon Sep 17 00:00:00 2001 From: Deadpikle Date: Sun, 5 Apr 2020 11:28:54 -0400 Subject: [PATCH 1/3] Add failing test for clearing SelectedText --- .../TextBoxTests.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs index 7f24a57678..f47aa915c9 100644 --- a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs @@ -425,6 +425,24 @@ namespace Avalonia.Controls.UnitTests } } + [Fact] + public void SelectedText_CanClearText() + { + using (UnitTestApplication.Start(Services)) + { + var target = new TextBox + { + Template = CreateTemplate(), + Text = "0123" + }; + target.SelectionStart = 1; + target.SelectionEnd = 3; + target.SelectedText = ""; + + Assert.True(target.Text == "03"); + } + } + [Fact] public void CoerceCaretIndex_Doesnt_Cause_Exception_with_malformed_line_ending() { From 14b227037b929abea8878a3a8f8911186560eaaa Mon Sep 17 00:00:00 2001 From: Deadpikle Date: Sun, 5 Apr 2020 11:42:48 -0400 Subject: [PATCH 2/3] Delete selection if SelectedText = "" --- src/Avalonia.Controls/TextBox.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index d25649f2a1..2920e3a5cf 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -283,7 +283,14 @@ namespace Avalonia.Controls } _undoRedoHelper.Snapshot(); - HandleTextInput(value); + if (value != "") + { + HandleTextInput(value); + } + else + { + DeleteSelection(); + } _undoRedoHelper.Snapshot(); } } From 681911098c2f5ff2234e58f87936b560313b9610 Mon Sep 17 00:00:00 2001 From: Deadpikle Date: Mon, 6 Apr 2020 17:16:51 -0400 Subject: [PATCH 3/3] SelectedText = null -> clear text --- src/Avalonia.Controls/TextBox.cs | 11 +++-------- .../TextBoxTests.cs | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 2920e3a5cf..680d7e7d2b 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -277,19 +277,14 @@ namespace Avalonia.Controls get { return GetSelection(); } set { - if (value == null) - { - return; - } - _undoRedoHelper.Snapshot(); - if (value != "") + if (string.IsNullOrEmpty(value)) { - HandleTextInput(value); + DeleteSelection(); } else { - DeleteSelection(); + HandleTextInput(value); } _undoRedoHelper.Snapshot(); } diff --git a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs index f47aa915c9..6bb3d55799 100644 --- a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs @@ -443,6 +443,24 @@ namespace Avalonia.Controls.UnitTests } } + [Fact] + public void SelectedText_NullClearsText() + { + using (UnitTestApplication.Start(Services)) + { + var target = new TextBox + { + Template = CreateTemplate(), + Text = "0123" + }; + target.SelectionStart = 1; + target.SelectionEnd = 3; + target.SelectedText = null; + + Assert.True(target.Text == "03"); + } + } + [Fact] public void CoerceCaretIndex_Doesnt_Cause_Exception_with_malformed_line_ending() {