diff options
Diffstat (limited to 'src/Ryujinx.Ava/UI/Windows')
| -rw-r--r-- | src/Ryujinx.Ava/UI/Windows/MainWindow.axaml | 5 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs | 49 |
2 files changed, 51 insertions, 3 deletions
diff --git a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml index 08b99cf5..de01f90f 100644 --- a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml +++ b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml @@ -12,15 +12,14 @@ Cursor="{Binding Cursor}" Title="{Binding Title}" WindowState="{Binding WindowState}" - Width="1280" - Height="777" + Width="{Binding WindowWidth}" + Height="{Binding WindowHeight}" MinWidth="1092" MinHeight="672" d:DesignHeight="720" d:DesignWidth="1280" x:CompileBindings="True" x:DataType="viewModels:MainWindowViewModel" - WindowStartupLocation="CenterScreen" mc:Ignorable="d" Focusable="True"> <Window.Styles> diff --git a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs index 81e05506..404d4ee0 100644 --- a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs +++ b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs @@ -62,6 +62,8 @@ namespace Ryujinx.Ava.UI.Windows DataContext = ViewModel; + SetWindowSizePosition(); + InitializeComponent(); Load(); @@ -297,6 +299,51 @@ namespace Ryujinx.Ava.UI.Windows LoadHotKeys(); } + private void SetWindowSizePosition() + { + PixelPoint SavedPoint = new PixelPoint(ConfigurationState.Instance.Ui.WindowStartup.WindowPositionX, + ConfigurationState.Instance.Ui.WindowStartup.WindowPositionY); + + ViewModel.WindowHeight = ConfigurationState.Instance.Ui.WindowStartup.WindowSizeHeight * Program.WindowScaleFactor; + ViewModel.WindowWidth = ConfigurationState.Instance.Ui.WindowStartup.WindowSizeWidth * Program.WindowScaleFactor; + + ViewModel.WindowState = ConfigurationState.Instance.Ui.WindowStartup.WindowMaximized.Value is true ? WindowState.Maximized : WindowState.Normal; + + if (CheckScreenBounds(SavedPoint)) + { + Position = SavedPoint; + } + + else WindowStartupLocation = WindowStartupLocation.CenterScreen; + } + + private bool CheckScreenBounds(PixelPoint configPoint) + { + for (int i = 0; i < Screens.ScreenCount; i++) + { + if (Screens.All[i].Bounds.Contains(configPoint)) + { + return true; + } + } + + Logger.Warning?.Print(LogClass.Application, $"Failed to find valid start-up coordinates. Defaulting to primary monitor center."); + return false; + } + + private void SaveWindowSizePosition() + { + ConfigurationState.Instance.Ui.WindowStartup.WindowSizeHeight.Value = (int)Height; + ConfigurationState.Instance.Ui.WindowStartup.WindowSizeWidth.Value = (int)Width; + + ConfigurationState.Instance.Ui.WindowStartup.WindowPositionX.Value = Position.X; + ConfigurationState.Instance.Ui.WindowStartup.WindowPositionY.Value = Position.Y; + + ConfigurationState.Instance.Ui.WindowStartup.WindowMaximized.Value = WindowState == WindowState.Maximized; + + MainWindowViewModel.SaveConfig(); + } + protected override void OnOpened(EventArgs e) { base.OnOpened(e); @@ -388,6 +435,8 @@ namespace Ryujinx.Ava.UI.Windows return; } + SaveWindowSizePosition(); + ApplicationLibrary.CancelLoading(); InputManager.Dispose(); Program.Exit(); |
