Allow window to remember its size, position and state (GTK + Avalonia) (#4657)
* Update ConfigurationState.cs * Update ConfigurationFileFormat.cs * Update MainWindow.cs * Update ConfigurationFileFormat.cs * Update ConfigurationState.cs * Update MainWindow.cs * Update MainWindow.cs * Update Ryujinx.Ui.Common/Configuration/ConfigurationState.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Update MainWindow.cs * Update Ryujinx/Ui/MainWindow.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Initial properties * Viewmodel adjustments and additions * abstract and monitor dimension changes * Remove position from ViewModel and simplify methods * Remove unused dep * Update configuration and fix typo from AA * review changes * Review changes * Screensize checks - Ava * Review changes 2 * basic review changes * Standardise GTK/Ava functions * Actually call function --------- Co-authored-by: HaizenTrist <123991082+HaizenTrist@users.noreply.github.com> Co-authored-by: gdkchan <gab.dark.100@gmail.com>
This commit is contained in:
parent
3b4ff2d6d9
commit
21c4176157
7 changed files with 189 additions and 15 deletions
|
@ -153,13 +153,8 @@ namespace Ryujinx.Ui
|
|||
|
||||
// Apply custom theme if needed.
|
||||
ThemeHelper.ApplyTheme();
|
||||
Gdk.Monitor monitor = Display.GetMonitor(0);
|
||||
// Sets overridden fields.
|
||||
int monitorWidth = monitor.Geometry.Width * monitor.ScaleFactor;
|
||||
int monitorHeight = monitor.Geometry.Height * monitor.ScaleFactor;
|
||||
|
||||
DefaultWidth = monitorWidth < 1280 ? monitorWidth : 1280;
|
||||
DefaultHeight = monitorHeight < 760 ? monitorHeight : 760;
|
||||
SetWindowSizePosition();
|
||||
|
||||
Icon = new Gdk.Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.Ui.Common.Resources.Logo_Ryujinx.png");
|
||||
Title = $"Ryujinx {Program.Version}";
|
||||
|
@ -1314,6 +1309,7 @@ namespace Ryujinx.Ui
|
|||
{
|
||||
if (!_gameLoaded || !ConfigurationState.Instance.ShowConfirmExit || GtkDialog.CreateExitDialog())
|
||||
{
|
||||
SaveWindowSizePosition();
|
||||
End();
|
||||
}
|
||||
}
|
||||
|
@ -1322,6 +1318,7 @@ namespace Ryujinx.Ui
|
|||
{
|
||||
if (!_gameLoaded || !ConfigurationState.Instance.ShowConfirmExit || GtkDialog.CreateExitDialog())
|
||||
{
|
||||
SaveWindowSizePosition();
|
||||
End();
|
||||
}
|
||||
else
|
||||
|
@ -1330,6 +1327,33 @@ namespace Ryujinx.Ui
|
|||
}
|
||||
}
|
||||
|
||||
private void SetWindowSizePosition()
|
||||
{
|
||||
DefaultWidth = ConfigurationState.Instance.Ui.WindowStartup.WindowSizeWidth;
|
||||
DefaultHeight = ConfigurationState.Instance.Ui.WindowStartup.WindowSizeHeight;
|
||||
|
||||
Move(ConfigurationState.Instance.Ui.WindowStartup.WindowPositionX, ConfigurationState.Instance.Ui.WindowStartup.WindowPositionY);
|
||||
|
||||
if (ConfigurationState.Instance.Ui.WindowStartup.WindowMaximized)
|
||||
{
|
||||
Maximize();
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveWindowSizePosition()
|
||||
{
|
||||
GetSize(out int windowWidth, out int windowHeight);
|
||||
GetPosition(out int windowXPos, out int windowYPos);
|
||||
|
||||
ConfigurationState.Instance.Ui.WindowStartup.WindowMaximized.Value = IsMaximized;
|
||||
ConfigurationState.Instance.Ui.WindowStartup.WindowSizeWidth.Value = windowWidth;
|
||||
ConfigurationState.Instance.Ui.WindowStartup.WindowSizeHeight.Value = windowHeight;
|
||||
ConfigurationState.Instance.Ui.WindowStartup.WindowPositionX.Value = windowXPos;
|
||||
ConfigurationState.Instance.Ui.WindowStartup.WindowPositionY.Value = windowYPos;
|
||||
|
||||
SaveConfig();
|
||||
}
|
||||
|
||||
private void StopEmulation_Pressed(object sender, EventArgs args)
|
||||
{
|
||||
if (_emulationContext != null)
|
||||
|
@ -1831,4 +1855,4 @@ namespace Ryujinx.Ui
|
|||
UpdateGameTable();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue