diff --git a/demo/Ursa.Demo/Pages/BannerDemo.axaml b/demo/Ursa.Demo/Pages/BannerDemo.axaml index c518be6..f94f5a4 100644 --- a/demo/Ursa.Demo/Pages/BannerDemo.axaml +++ b/demo/Ursa.Demo/Pages/BannerDemo.axaml @@ -48,5 +48,8 @@ + + + diff --git a/src/Ursa/Controls/Dialog/OverlayDialog.cs b/src/Ursa/Controls/Dialog/OverlayDialog.cs index 8d16e5f..7d69047 100644 --- a/src/Ursa/Controls/Dialog/OverlayDialog.cs +++ b/src/Ursa/Controls/Dialog/OverlayDialog.cs @@ -211,6 +211,12 @@ public static class OverlayDialog control.CanLightDismiss = options.CanLightDismiss; control.CanDragMove = options.CanDragMove; } - - + + internal static T? Recall(string? hostId) where T: Control + { + var host = OverlayDialogManager.GetHost(hostId); + if (host is null) return null; + var item = host.Recall(); + return item; + } } \ No newline at end of file diff --git a/src/Ursa/Controls/NumPad/NumPad.cs b/src/Ursa/Controls/NumPad/NumPad.cs index 12bbcfb..817841a 100644 --- a/src/Ursa/Controls/NumPad/NumPad.cs +++ b/src/Ursa/Controls/NumPad/NumPad.cs @@ -54,6 +54,13 @@ public class NumPad: TemplatedControl private static void OnTargetGotFocus(object sender, GotFocusEventArgs e) { + if (sender is not InputElement) return; + var existing = OverlayDialog.Recall(null); + if (existing is not null) + { + existing.Target = sender as InputElement; + return; + } var numPad = new NumPad() { Target = sender as InputElement }; OverlayDialog.ShowCustom(numPad, new object()); } diff --git a/src/Ursa/Controls/NumericUpDown/NumericUpDownBase.cs b/src/Ursa/Controls/NumericUpDown/NumericUpDownBase.cs index 198aa64..54aa1e9 100644 --- a/src/Ursa/Controls/NumericUpDown/NumericUpDownBase.cs +++ b/src/Ursa/Controls/NumericUpDown/NumericUpDownBase.cs @@ -215,7 +215,12 @@ public abstract class NumericUpDown : TemplatedControl, IClearControl } } - + + protected override void OnTextInput(TextInputEventArgs e) + { + _textBox?.RaiseEvent(e); + } + private void OnDragPanelPointerReleased(object sender, PointerReleasedEventArgs e) { _point = null; diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs index da2a894..f2bdfa9 100644 --- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs +++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs @@ -189,4 +189,10 @@ public partial class OverlayDialogHost: Canvas } return result; } + + internal T? Recall() + { + var element = _layers.LastOrDefault(a => a.Element.Content?.GetType() == typeof(T)); + return element?.Element.Content is T t ? t : default; + } } \ No newline at end of file