Browse Source

Cut now triggers an undo

pull/3752/head
Deadpikle 6 years ago
parent
commit
d8f74b7e41
  1. 2
      src/Avalonia.Controls/TextBox.cs
  2. 13
      tests/Avalonia.Controls.UnitTests/TextBoxTests.cs

2
src/Avalonia.Controls/TextBox.cs

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

13
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;
}
}
}

Loading…
Cancel
Save