mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-23 20:47:25 -08:00
enhance: AutoFocusBehaviour will move cursor to the end of contents
This commit is contained in:
parent
1e3711e569
commit
60a4d21ce7
1 changed files with 16 additions and 8 deletions
|
@ -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;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue