Explorar el Código

Add window drag functionality and update `ConvertWindow` layout in macOS

- Implement `MoveWindow` method to enable window drag using `PointerPressed` events.
- Update `ConvertWindow.axaml` to use `DockPanel` for better layout structure.
- Add a draggable title bar with `Translation.ConvertTo` text.
Ruben hace 4 meses
padre
commit
87b423b8bd

+ 14 - 1
src/PicView.Avalonia.MacOS/Views/ConvertWindow.axaml

@@ -4,8 +4,21 @@
     ExtendClientAreaTitleBarHeightHint="-1"
     SizeToContent="WidthAndHeight"
     x:Class="PicView.Avalonia.MacOS.Views.ConvertWindow"
+    x:DataType="viewModels:MainViewModel"
     xmlns="https://github.com/avaloniaui"
     xmlns:main="clr-namespace:PicView.Avalonia.Views.Main;assembly=PicView.Avalonia"
+    xmlns:viewModels="clr-namespace:PicView.Avalonia.ViewModels;assembly=PicView.Avalonia"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-    <main:ConvertView />
+    <DockPanel PointerPressed="MoveWindow">
+        <Panel Background="Transparent" DockPanel.Dock="Top">
+            <Border Background="{DynamicResource SecondaryBackgroundColor}" Height="28">
+                <TextBlock
+                    Classes="txt"
+                    Text="{CompiledBinding Translation.ConvertTo.Value,
+                                           Mode=OneWay}"
+                    TextAlignment="Center" />
+            </Border>
+        </Panel>
+        <main:ConvertView DockPanel.Dock="Bottom" />
+    </DockPanel>
 </Window>

+ 9 - 0
src/PicView.Avalonia.MacOS/Views/ConvertWindow.axaml.cs

@@ -1,4 +1,5 @@
 using Avalonia.Controls;
+using Avalonia.Input;
 using PicView.Avalonia.UI;
 using PicView.Core.Localization;
 
@@ -11,4 +12,12 @@ public partial class ConvertWindow : Window
         InitializeComponent();
         GenericWindowHelper.GenericWindowInitialize(this, TranslationManager.Translation.ConvertTo + " - PicView");
     }
+    
+    private void MoveWindow(object? sender, PointerPressedEventArgs e)
+    {
+        if (VisualRoot is null) { return; }
+
+        var hostWindow = (Window)VisualRoot;
+        hostWindow?.BeginMoveDrag(e);
+    }
 }