Browse Source

Use routed events

pull/6492/head
Max Katz 5 years ago
parent
commit
825ddc9cca
  1. 44
      src/Avalonia.Controls/TextBox.cs
  2. 18
      src/Avalonia.Controls/TextBoxClipboardEventArgs.cs

44
src/Avalonia.Controls/TextBox.cs

@ -145,6 +145,18 @@ namespace Avalonia.Controls
(o, v) => o.UndoLimit = v,
unsetValue: -1);
public static readonly RoutedEvent<RoutedEventArgs> CopyingToClipboardEvent =
RoutedEvent.Register<TextBox, RoutedEventArgs>(
"CopyingToClipboard", RoutingStrategies.Bubble);
public static readonly RoutedEvent<RoutedEventArgs> CuttingToClipboardEvent =
RoutedEvent.Register<TextBox, RoutedEventArgs>(
"CuttingToClipboard", RoutingStrategies.Bubble);
public static readonly RoutedEvent<RoutedEventArgs> PastingFromClipboardEvent =
RoutedEvent.Register<TextBox, RoutedEventArgs>(
"PastingFromClipboard", RoutingStrategies.Bubble);
readonly struct UndoRedoState : IEquatable<UndoRedoState>
{
public string Text { get; }
@ -500,9 +512,23 @@ namespace Avalonia.Controls
}
}
public event EventHandler<TextBoxClipboardEventArgs> CopyingToClipboard;
public event EventHandler<TextBoxClipboardEventArgs> CuttingToClipboard;
public event EventHandler<TextBoxClipboardEventArgs> PastingFromClipboard;
public event EventHandler<RoutedEventArgs> CopyingToClipboard
{
add => AddHandler(CopyingToClipboardEvent, value);
remove => RemoveHandler(CopyingToClipboardEvent, value);
}
public event EventHandler<RoutedEventArgs> CuttingToClipboard
{
add => AddHandler(CuttingToClipboardEvent, value);
remove => RemoveHandler(CuttingToClipboardEvent, value);
}
public event EventHandler<RoutedEventArgs> PastingFromClipboard
{
add => AddHandler(PastingFromClipboardEvent, value);
remove => RemoveHandler(PastingFromClipboardEvent, value);
}
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{
@ -647,8 +673,8 @@ namespace Avalonia.Controls
return;
}
var eventArgs = new TextBoxClipboardEventArgs();
CuttingToClipboard?.Invoke(this, eventArgs);
var eventArgs = new RoutedEventArgs(CuttingToClipboardEvent);
RaiseEvent(eventArgs);
if (!eventArgs.Handled)
{
SnapshotUndoRedo();
@ -666,8 +692,8 @@ namespace Avalonia.Controls
return;
}
var eventArgs = new TextBoxClipboardEventArgs();
CopyingToClipboard?.Invoke(this, eventArgs);
var eventArgs = new RoutedEventArgs(CopyingToClipboardEvent);
RaiseEvent(eventArgs);
if (!eventArgs.Handled)
{
await ((IClipboard)AvaloniaLocator.Current.GetService(typeof(IClipboard)))
@ -677,8 +703,8 @@ namespace Avalonia.Controls
public async void Paste()
{
var eventArgs = new TextBoxClipboardEventArgs();
PastingFromClipboard?.Invoke(this, eventArgs);
var eventArgs = new RoutedEventArgs(PastingFromClipboardEvent);
RaiseEvent(eventArgs);
if (eventArgs.Handled)
{
return;

18
src/Avalonia.Controls/TextBoxClipboardEventArgs.cs

@ -1,18 +0,0 @@
using System;
namespace Avalonia.Controls
{
/// <summary>
/// Provides event data for the <see cref="TextBox.CuttingToClipboard"/>, <see cref="TextBox.CopyingToClipboard"/> and <see cref="TextBox.PasteFromClipboard"/> events.
/// </summary>
/// <remarks>
/// If you perform any action in the handler for a clipboard event, set the Handled property to true; otherwise, the default action is performed.
/// </remarks>
public class TextBoxClipboardEventArgs : EventArgs
{
/// <summary>
/// Gets or sets a value that marks the event as handled. A true value for Handled prevents most handlers along the event from handling the same event again.
/// </summary>
public bool Handled { get; set; }
}
}
Loading…
Cancel
Save