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