Browse Source

Fixed number input focus crash and scene cursor change

Krzysztof Krysiński 1 year ago
parent
commit
cca3b9b5a2

+ 1 - 1
src/PixiEditor.AvaloniaUI/Helpers/Behaviours/TextBoxFocusBehavior.cs

@@ -112,7 +112,7 @@ internal class TextBoxFocusBehavior : Behavior<TextBox>
         if (DeselectOnFocusLoss)
             AssociatedObject.ClearSelection();
 
-        RemoveFocus();
+        //RemoveFocus();
     }
 
     private void OnPointerPressed(object? sender, PointerPressedEventArgs e)

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Input/NumberInput.cs

@@ -122,7 +122,7 @@ internal partial class NumberInput : TextBox
     {
         BehaviorCollection behaviors = Interaction.GetBehaviors(this);
         behaviors.Add(new GlobalShortcutFocusBehavior());
-        TextBoxFocusBehavior behavior = new() { DeselectOnFocusLoss = true };
+        TextBoxFocusBehavior behavior = new() { DeselectOnFocusLoss = true, SelectOnMouseClick = true };
         BindTextBoxBehavior(behavior);
         behaviors.Add(behavior);
         Interaction.SetBehaviors(this, behaviors);

+ 9 - 0
src/PixiEditor.AvaloniaUI/Views/Rendering/Scene.cs

@@ -102,6 +102,7 @@ internal class Scene : Zoombox.Zoombox, ICustomHitTest
         SurfaceProperty.Changed.AddClassHandler<Scene>(SurfaceChanged);
         CheckerImagePathProperty.Changed.AddClassHandler<Scene>(CheckerImagePathChanged);
         AllOverlaysProperty.Changed.AddClassHandler<Scene>(ActiveOverlaysChanged);
+        DefaultCursorProperty.Changed.AddClassHandler<Scene>(DefaultCursorChanged);
     }
 
     public Scene()
@@ -435,6 +436,14 @@ internal class Scene : Zoombox.Zoombox, ICustomHitTest
         }
     }
 
+    private static void DefaultCursorChanged(Scene scene, AvaloniaPropertyChangedEventArgs e)
+    {
+        if (e.NewValue is Cursor cursor)
+        {
+            scene.Cursor = cursor;
+        }
+    }
+
     bool ICustomHitTest.HitTest(Point point)
     {
         return Bounds.Contains(point);