mirror of
https://fastgit.cc/github.com/sourcegit-scm/sourcegit
synced 2026-04-24 10:50:52 +08:00
enhance: AutoFocusBehaviour will move cursor to the end of contents
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
|
||||
namespace SourceGit.Views
|
||||
@@ -6,17 +7,11 @@ namespace SourceGit.Views
|
||||
public class AutoFocusBehaviour : AvaloniaObject
|
||||
{
|
||||
public static readonly AttachedProperty<bool> IsEnabledProperty =
|
||||
AvaloniaProperty.RegisterAttached<AutoFocusBehaviour, InputElement, bool>("IsEnabled", false, false);
|
||||
AvaloniaProperty.RegisterAttached<AutoFocusBehaviour, TextBox, bool>("IsEnabled", false, false);
|
||||
|
||||
static AutoFocusBehaviour()
|
||||
{
|
||||
IsEnabledProperty.Changed.AddClassHandler<InputElement>((input, e) =>
|
||||
{
|
||||
if (input.GetValue(IsEnabledProperty))
|
||||
{
|
||||
input.AttachedToVisualTree += (o, _) => (o as InputElement).Focus(NavigationMethod.Directional);
|
||||
}
|
||||
});
|
||||
IsEnabledProperty.Changed.AddClassHandler<TextBox>(OnIsEnabledChanged);
|
||||
}
|
||||
|
||||
public static bool GetIsEnabled(AvaloniaObject elem)
|
||||
@@ -28,5 +23,18 @@ namespace SourceGit.Views
|
||||
{
|
||||
elem.SetValue(IsEnabledProperty, value);
|
||||
}
|
||||
|
||||
private static void OnIsEnabledChanged(TextBox elem, AvaloniaPropertyChangedEventArgs e)
|
||||
{
|
||||
if (GetIsEnabled(elem))
|
||||
{
|
||||
elem.AttachedToVisualTree += (o, _) =>
|
||||
{
|
||||
var text = o as TextBox;
|
||||
text.Focus(NavigationMethod.Directional);
|
||||
text.CaretIndex = text.Text == null ? 0 : text.Text.Length;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user