fix: window border artifacts when drag maximized window to another monitor

This commit is contained in:
leo 2024-06-27 22:06:05 +08:00
parent f8c4137c78
commit ac00d1a221
No known key found for this signature in database
2 changed files with 16 additions and 4 deletions

View file

@ -13,9 +13,6 @@
Icon="/App.ico"
Title="SourceGit"
MinWidth="1280" MinHeight="720"
Width="{Binding Source={x:Static vm:Preference.Instance}, Path=Layout.LauncherWidth, Mode=TwoWay}"
Height="{Binding Source={x:Static vm:Preference.Instance}, Path=Layout.LauncherHeight, Mode=TwoWay}"
WindowState="{Binding Source={x:Static vm:Preference.Instance}, Path=Layout.LauncherWindowState, Mode=TwoWay}"
WindowStartupLocation="CenterScreen">
<Grid x:Name="MainLayout">
<Grid.RowDefinitions>

View file

@ -12,19 +12,30 @@ namespace SourceGit.Views
public Launcher()
{
InitializeComponent();
var layout = ViewModels.Preference.Instance.Layout;
WindowState = layout.LauncherWindowState;
if (WindowState != WindowState.Maximized)
{
Width = layout.LauncherWidth;
Height = layout.LauncherHeight;
}
}
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
base.OnPropertyChanged(change);
if (change.Property == WindowStateProperty)
if (change.Property == WindowStateProperty && MainLayout != null)
{
var state = (WindowState)change.NewValue;
if (state == WindowState.Maximized)
MainLayout.RowDefinitions[0].Height = new GridLength(OperatingSystem.IsMacOS() ? 34 : 30);
else
MainLayout.RowDefinitions[0].Height = new GridLength(38);
ViewModels.Preference.Instance.Layout.LauncherWindowState = state;
}
}
@ -124,6 +135,10 @@ namespace SourceGit.Views
protected override void OnClosing(WindowClosingEventArgs e)
{
var pref = ViewModels.Preference.Instance;
pref.Layout.LauncherWidth = Width;
pref.Layout.LauncherHeight = Height;
var vm = DataContext as ViewModels.Launcher;
vm.Quit();