From bc42091ce9416fc9682e616d8ad9165ea36646b9 Mon Sep 17 00:00:00 2001 From: danwalmsley Date: Tue, 18 Aug 2020 17:30:11 +0100 Subject: [PATCH] Revert "Expose Cut Copy and Paste methods for binding for context menus" --- src/Avalonia.Controls/TextBox.cs | 103 +++-------------------- src/Avalonia.Themes.Default/TextBox.xaml | 8 -- src/Avalonia.Themes.Fluent/TextBox.xaml | 7 -- 3 files changed, 14 insertions(+), 104 deletions(-) diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 6838f27262..4e742b3b7b 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -18,15 +18,6 @@ namespace Avalonia.Controls { public class TextBox : TemplatedControl, UndoRedoHelper.IUndoRedoHost { - public static KeyGesture CutGesture { get; } = AvaloniaLocator.Current - .GetService()?.Cut.FirstOrDefault(); - - public static KeyGesture CopyGesture { get; } = AvaloniaLocator.Current - .GetService()?.Copy.FirstOrDefault(); - - public static KeyGesture PasteGesture { get; } = AvaloniaLocator.Current - .GetService()?.Paste.FirstOrDefault(); - public static readonly StyledProperty AcceptsReturnProperty = AvaloniaProperty.Register(nameof(AcceptsReturn)); @@ -112,21 +103,6 @@ namespace Avalonia.Controls public static readonly StyledProperty RevealPasswordProperty = AvaloniaProperty.Register(nameof(RevealPassword)); - - public static readonly DirectProperty CanCutProperty = - AvaloniaProperty.RegisterDirect( - nameof(CanCut), - o => o.CanCut); - - public static readonly DirectProperty CanCopyProperty = - AvaloniaProperty.RegisterDirect( - nameof(CanCopy), - o => o.CanCopy); - - public static readonly DirectProperty CanPasteProperty = - AvaloniaProperty.RegisterDirect( - nameof(CanPaste), - o => o.CanPaste); struct UndoRedoState : IEquatable { @@ -150,9 +126,6 @@ namespace Avalonia.Controls private UndoRedoHelper _undoRedoHelper; private bool _isUndoingRedoing; private bool _ignoreTextChanges; - private bool _canCut; - private bool _canCopy; - private bool _canPaste; private string _newLine = Environment.NewLine; private static readonly string[] invalidCharacters = new String[1] { "\u007f" }; @@ -397,33 +370,6 @@ namespace Avalonia.Controls set { SetAndRaise(NewLineProperty, ref _newLine, value); } } - /// - /// Property for determining if the Cut command can be executed. - /// - public bool CanCut - { - get { return _canCut; } - private set { SetAndRaise(CanCutProperty, ref _canCut, value); } - } - - /// - /// Property for determining if the Copy command can be executed. - /// - public bool CanCopy - { - get { return _canCopy; } - private set { SetAndRaise(CanCopyProperty, ref _canCopy, value); } - } - - /// - /// Property for determining if the Paste command can be executed. - /// - public bool CanPaste - { - get { return _canPaste; } - private set { SetAndRaise(CanPasteProperty, ref _canPaste, value); } - } - protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { _presenter = e.NameScope.Get("PART_TextPresenter"); @@ -441,19 +387,9 @@ namespace Avalonia.Controls if (change.Property == TextProperty) { UpdatePseudoclasses(); - UpdateCommandStates(); } } - private void UpdateCommandStates() - { - var text = GetSelection(); - var b1 = string.IsNullOrEmpty(text); - CanCopy = !b1; - CanCut = !b1; - CanPaste = !IsReadOnly; - } - protected override void OnGotFocus(GotFocusEventArgs e) { base.OnGotFocus(e); @@ -468,8 +404,6 @@ namespace Avalonia.Controls SelectAll(); } - UpdateCommandStates(); - _presenter?.ShowCaret(); } @@ -483,9 +417,7 @@ namespace Avalonia.Controls SelectionEnd = 0; RevealPassword = false; } - - UpdateCommandStates(); - + _presenter?.HideCaret(); } @@ -528,31 +460,19 @@ namespace Avalonia.Controls return text; } - public async void Cut() - { - var text = GetSelection(); - if (text is null) return; - - _undoRedoHelper.Snapshot(); - Copy(); - DeleteSelection(); - _undoRedoHelper.Snapshot(); - } - - public async void Copy() + private async void Copy() { - var text = GetSelection(); - if (text is null) return; - await ((IClipboard)AvaloniaLocator.Current.GetService(typeof(IClipboard))) - .SetTextAsync(text); + .SetTextAsync(GetSelection()); } - public async void Paste() + private async void Paste() { var text = await ((IClipboard)AvaloniaLocator.Current.GetService(typeof(IClipboard))).GetTextAsync(); - - if (text is null) return; + if (text == null) + { + return; + } _undoRedoHelper.Snapshot(); HandleTextInput(text); @@ -591,18 +511,23 @@ namespace Avalonia.Controls { if (!IsPasswordBox) { - Cut(); + _undoRedoHelper.Snapshot(); + Copy(); + DeleteSelection(); + _undoRedoHelper.Snapshot(); } handled = true; } else if (Match(keymap.Paste)) { + Paste(); handled = true; } else if (Match(keymap.Undo)) { + try { _isUndoingRedoing = true; diff --git a/src/Avalonia.Themes.Default/TextBox.xaml b/src/Avalonia.Themes.Default/TextBox.xaml index e9d5857d67..8384cccada 100644 --- a/src/Avalonia.Themes.Default/TextBox.xaml +++ b/src/Avalonia.Themes.Default/TextBox.xaml @@ -1,11 +1,4 @@ - - - - - - -