Browse Source

Fixes fixes

Krzysztof Krysiński 2 years ago
parent
commit
2396baf1ed

+ 1 - 0
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Helpers/Converters/ActiveToolToZoomModeConverter.cs

@@ -8,6 +8,7 @@ internal class ActiveToolToZoomModeConverter : SingleInstanceConverter<ActiveToo
 {
 {
     public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     {
     {
+        return ZoomboxMode.Move;
         return value switch
         return value switch
         {
         {
             MoveViewportToolViewModel => ZoomboxMode.Move,
             MoveViewportToolViewModel => ZoomboxMode.Move,

+ 2 - 0
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Main/Viewport.axaml

@@ -124,6 +124,7 @@
             ZoomOutOnClick="{Binding ZoomOutOnClick, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:Viewport}, Mode=TwoWay}"
             ZoomOutOnClick="{Binding ZoomOutOnClick, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:Viewport}, Mode=TwoWay}"
             FlipX="{Binding FlipX, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:Viewport}, Mode=TwoWay}"
             FlipX="{Binding FlipX, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:Viewport}, Mode=TwoWay}"
             FlipY="{Binding FlipY, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:Viewport}, Mode=TwoWay}">
             FlipY="{Binding FlipY, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:Viewport}, Mode=TwoWay}">
+            <zoombox:Zoombox.AdditionalContent>
             <Border
             <Border
                 d:Width="64"
                 d:Width="64"
                 d:Height="64"
                 d:Height="64"
@@ -405,6 +406,7 @@
                     </Rectangle>
                     </Rectangle>
                 </Grid>
                 </Grid>
             </Border>
             </Border>
+                </zoombox:Zoombox.AdditionalContent>
         </zoombox:Zoombox>
         </zoombox:Zoombox>
         <Button 
         <Button 
             ZIndex="99999"
             ZIndex="99999"

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Main/Viewport.axaml.cs

@@ -311,7 +311,7 @@ internal partial class Viewport : UserControl, INotifyPropertyChanged
         mouseUpdateController = new MouseUpdateController(this, Image_MouseMove);
         mouseUpdateController = new MouseUpdateController(this, Image_MouseMove);
     }
     }
 
 
-    public Image? MainImage => (Image?)((Grid?)((Border?)zoombox.Content)?.Child)?.Children[1];
+    public Image? MainImage => (Image?)((Grid?)((Border?)zoombox.AdditionalContent)?.Child)?.Children[1];
     public Grid BackgroundGrid => mainGrid;
     public Grid BackgroundGrid => mainGrid;
 
 
     private void ForceRefreshFinalImage()
     private void ForceRefreshFinalImage()

+ 0 - 4
src/PixiEditor.Zoombox/Zoombox.axaml

@@ -16,15 +16,11 @@
     <Canvas
     <Canvas
         ClipToBounds="True"
         ClipToBounds="True"
         x:Name="mainCanvas"
         x:Name="mainCanvas"
-        Width="0.01"
-        Height="0.01"
         Background="Transparent"
         Background="Transparent"
         SizeChanged="OnMainCanvasSizeChanged">
         SizeChanged="OnMainCanvasSizeChanged">
         <Grid
         <Grid
             x:Name="mainGrid"
             x:Name="mainGrid"
             SizeChanged="OnGridSizeChanged"
             SizeChanged="OnGridSizeChanged"
-            Width="1"
-            Height="1"
             Canvas.Left="{Binding ElementName=uc, Path=CanvasX}"
             Canvas.Left="{Binding ElementName=uc, Path=CanvasX}"
             Canvas.Top="{Binding ElementName=uc, Path=CanvasY}">
             Canvas.Top="{Binding ElementName=uc, Path=CanvasY}">
             <Grid.RenderTransform>
             <Grid.RenderTransform>

+ 14 - 14
src/PixiEditor.Zoombox/Zoombox.axaml.cs

@@ -135,8 +135,8 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
         get
         get
         {
         {
             double fraction = Math.Max(
             double fraction = Math.Max(
-                mainCanvas.Width / mainGrid.Width,
-                mainCanvas.Height / mainGrid.Height);
+                mainCanvas.Bounds.Width / mainGrid.Bounds.Width,
+                mainCanvas.Bounds.Height / mainGrid.Bounds.Height);
             return Math.Min(fraction / 8, 0.1);
             return Math.Min(fraction / 8, 0.1);
         }
         }
     }
     }
@@ -152,13 +152,13 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
             delta.X = -delta.X;
             delta.X = -delta.X;
         if (FlipY)
         if (FlipY)
             delta.Y = -delta.Y;
             delta.Y = -delta.Y;
-        delta += new VecD(mainCanvas.Width / 2, mainCanvas.Height / 2);
+        delta += new VecD(mainCanvas.Bounds.Width / 2, mainCanvas.Bounds.Height / 2);
         return delta;
         return delta;
     }
     }
 
 
     internal VecD ToZoomboxSpace(VecD mousePos)
     internal VecD ToZoomboxSpace(VecD mousePos)
     {
     {
-        VecD delta = mousePos - new VecD(mainCanvas.Width / 2, mainCanvas.Height / 2);
+        VecD delta = mousePos - new VecD(mainCanvas.Bounds.Width / 2, mainCanvas.Bounds.Height / 2);
         if (FlipX)
         if (FlipX)
             delta.X = -delta.X;
             delta.X = -delta.X;
         if (FlipY)
         if (FlipY)
@@ -269,7 +269,7 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
 
 
     private void RaiseViewportEvent()
     private void RaiseViewportEvent()
     {
     {
-        VecD realDim = new VecD(mainCanvas.Width, mainCanvas.Height);
+        VecD realDim = new VecD(mainCanvas.Bounds.Width, mainCanvas.Bounds.Height);
         RealDimensions = realDim;
         RealDimensions = realDim;
         RaiseEvent(new ViewportRoutedEventArgs(
         RaiseEvent(new ViewportRoutedEventArgs(
             ViewportMovedEvent,
             ViewportMovedEvent,
@@ -279,14 +279,14 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
             Angle));
             Angle));
     }
     }
 
 
-    public void CenterContent() => CenterContent(new(mainGrid.Width, mainGrid.Height));
+    public void CenterContent() => CenterContent(new(mainGrid.Bounds.Width, mainGrid.Bounds.Height));
 
 
     public void CenterContent(VecD newSize)
     public void CenterContent(VecD newSize)
     {
     {
         const double marginFactor = 1.1;
         const double marginFactor = 1.1;
         double scaleFactor = Math.Max(
         double scaleFactor = Math.Max(
-            newSize.X * marginFactor / mainCanvas.Width,
-            newSize.Y * marginFactor / mainCanvas.Height);
+            newSize.X * marginFactor / mainCanvas.Bounds.Width,
+            newSize.Y * marginFactor / mainCanvas.Bounds.Height);
 
 
         Angle = 0;
         Angle = 0;
         FlipX = false;
         FlipX = false;
@@ -297,7 +297,7 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
 
 
     public void ZoomIntoCenter(double delta)
     public void ZoomIntoCenter(double delta)
     {
     {
-        ZoomInto(new VecD(mainCanvas.Width / 2, mainCanvas.Height / 2), delta);
+        ZoomInto(new VecD(mainCanvas.Bounds.Width / 2, mainCanvas.Bounds.Height / 2), delta);
     }
     }
 
 
     public void ZoomInto(VecD mousePos, double delta)
     public void ZoomInto(VecD mousePos, double delta)
@@ -351,7 +351,7 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
         if (but == MouseButton.Right)
         if (but == MouseButton.Right)
             return;
             return;
         activeMouseDownEventArgs = e;
         activeMouseDownEventArgs = e;
-        activeMouseDownPos = ToVecD(e.GetPosition(mainCanvas));
+        activeMouseDownPos = ToVecD(e.GetPosition(uc));
         Focus(NavigationMethod.Unspecified);
         Focus(NavigationMethod.Unspecified);
     }
     }
 
 
@@ -386,7 +386,7 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
         else
         else
         {
         {
             if (ZoomMode == ZoomboxMode.Zoom && e.InitialPressMouseButton == MouseButton.Left)
             if (ZoomMode == ZoomboxMode.Zoom && e.InitialPressMouseButton == MouseButton.Left)
-                ZoomInto(ToVecD(e.GetPosition(mainCanvas)), ZoomOutOnClick ? -1 : 1);
+                ZoomInto(ToVecD(e.GetPosition(uc)), ZoomOutOnClick ? -1 : 1);
         }
         }
         activeMouseDownEventArgs = null;
         activeMouseDownEventArgs = null;
     }
     }
@@ -395,7 +395,7 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
     {
     {
         if (activeDragOperation is null && activeMouseDownEventArgs is not null)
         if (activeDragOperation is null && activeMouseDownEventArgs is not null)
         {
         {
-            VecD cur = ToVecD(e.GetPosition(mainCanvas));
+            VecD cur = ToVecD(e.GetPosition(uc));
 
 
             if ((cur - activeMouseDownPos).TaxicabLength > 3)
             if ((cur - activeMouseDownPos).TaxicabLength > 3)
                 InitiateDrag(activeMouseDownEventArgs);
                 InitiateDrag(activeMouseDownEventArgs);
@@ -408,7 +408,7 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
         double abs = Math.Abs(-e.Delta.Y / 100.0);
         double abs = Math.Abs(-e.Delta.Y / 100.0);
         for (int i = 0; i < abs; i++)
         for (int i = 0; i < abs; i++)
         {
         {
-            ZoomInto(ToVecD(e.GetPosition(mainCanvas)), -e.Delta.Y / 100.0);
+            ZoomInto(ToVecD(e.GetPosition(uc)), -e.Delta.Y / 100.0);
         }
         }
     }
     }
 
 
@@ -450,7 +450,7 @@ public partial class Zoombox : UserControl, INotifyPropertyChanged
     private static void OnPropertyChange(Zoombox zoombox)
     private static void OnPropertyChange(Zoombox zoombox)
     {
     {
         VecD topLeft = zoombox.ToZoomboxSpace(VecD.Zero).Rotate(zoombox.Angle);
         VecD topLeft = zoombox.ToZoomboxSpace(VecD.Zero).Rotate(zoombox.Angle);
-        VecD bottomRight = zoombox.ToZoomboxSpace(new(zoombox.mainCanvas.Width, zoombox.mainCanvas.Height)).Rotate(zoombox.Angle);
+        VecD bottomRight = zoombox.ToZoomboxSpace(new(zoombox.mainCanvas.Bounds.Width, zoombox.mainCanvas.Bounds.Height)).Rotate(zoombox.Angle);
 
 
         zoombox.Dimensions = (bottomRight - topLeft).Abs();
         zoombox.Dimensions = (bottomRight - topLeft).Abs();
         zoombox.PropertyChanged?.Invoke(zoombox, new(nameof(zoombox.ScaleTransformXY)));
         zoombox.PropertyChanged?.Invoke(zoombox, new(nameof(zoombox.ScaleTransformXY)));