1
0
Deadpikle 5 жил өмнө
parent
commit
d8f74b7e41

+ 2 - 0
src/Avalonia.Controls/TextBox.cs

@@ -473,8 +473,10 @@ namespace Avalonia.Controls
             {
                 if (!IsPasswordBox)
                 {
+                    _undoRedoHelper.Snapshot();
                     Copy();
                     DeleteSelection();
+                    _undoRedoHelper.Snapshot();
                 }
 
                 handled = true;

+ 13 - 0
tests/Avalonia.Controls.UnitTests/TextBoxTests.cs

@@ -1,10 +1,12 @@
 using System;
 using System.Reactive.Linq;
+using System.Threading.Tasks;
 using Avalonia.Controls.Presenters;
 using Avalonia.Controls.Primitives;
 using Avalonia.Controls.Templates;
 using Avalonia.Data;
 using Avalonia.Input;
+using Avalonia.Input.Platform;
 using Avalonia.Media;
 using Avalonia.Platform;
 using Avalonia.UnitTests;
@@ -567,6 +569,8 @@ namespace Avalonia.Controls.UnitTests
                 };
                 target.SelectionStart = 1;
                 target.SelectionEnd = 3;
+                AvaloniaLocator.CurrentMutable
+                    .Bind<Input.Platform.IClipboard>().ToSingleton<ClipboardStub>();
 
                 RaiseKeyEvent(target, Key.X, KeyModifiers.Control); // cut
                 Assert.True(target.Text == "03");
@@ -638,5 +642,14 @@ namespace Avalonia.Controls.UnitTests
                 set { _bar = value; RaisePropertyChanged(); }
             }
         }
+
+        private class ClipboardStub : IClipboard // in order to get tests working that use the clipboard
+        {
+            public Task<string> GetTextAsync() => Task.FromResult("");
+
+            public Task SetTextAsync(string text) => Task.CompletedTask;
+
+            public Task ClearAsync() => Task.CompletedTask;
+        }
     }
 }