From 4a0ac2501a60c2d5571db93cb0a304be08b258df Mon Sep 17 00:00:00 2001 From: Salvador Cipolla Date: Sun, 9 Feb 2025 08:36:24 -0300 Subject: [PATCH 1/2] Improve how custom main window size is applied --- Knossos.NET/App.axaml.cs | 10 ++++------ .../ViewModels/Windows/MainWindowViewModel.cs | 11 +++++------ Knossos.NET/Views/Windows/MainWindow.axaml | 2 -- Knossos.NET/Views/Windows/MainWindow.axaml.cs | 13 +++++++++++++ 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Knossos.NET/App.axaml.cs b/Knossos.NET/App.axaml.cs index ad208605..7c637a5e 100644 --- a/Knossos.NET/App.axaml.cs +++ b/Knossos.NET/App.axaml.cs @@ -51,16 +51,13 @@ public override void OnFrameworkInitializationCompleted() private void CreateMainWindow(IClassicDesktopStyleApplicationLifetime desktop) { - if(mainVM == null) - { - mainVM = new MainWindowViewModel(); - } - desktop.MainWindow = new MainWindow { - DataContext = mainVM + DataContext = new MainWindowViewModel() }; + mainVM = desktop.MainWindow.DataContext as MainWindowViewModel; + desktop.MainWindow.Closing += (_, __) => { if (Knossos.globalSettings.closeToTray || trayMode) @@ -101,6 +98,7 @@ private async void StartTrayIcon() { MainWindow.instance?.FixMarginButtomTasks(); } + MainWindow.instance?.SetSize(mainVM?.WindowWidth, mainVM?.WindowHeight); trayIcon?.Dispose(); GC.Collect(); } diff --git a/Knossos.NET/ViewModels/Windows/MainWindowViewModel.cs b/Knossos.NET/ViewModels/Windows/MainWindowViewModel.cs index a4eb084f..03ea8193 100644 --- a/Knossos.NET/ViewModels/Windows/MainWindowViewModel.cs +++ b/Knossos.NET/ViewModels/Windows/MainWindowViewModel.cs @@ -43,10 +43,8 @@ public partial class MainWindowViewModel : ViewModelBase /* UI Bindings, use the uppercase version, otherwise changes will not register */ [ObservableProperty] internal string appTitle = "Knossos.NET v" + Knossos.AppVersion; - [ObservableProperty] - internal int windowWidth = 1200; - [ObservableProperty] - internal int windowHeight = 700; + public int? WindowWidth { get; private set; } = null; + public int? WindowHeight { get; private set; } = null; [ObservableProperty] internal int minWindowWidth = 900; [ObservableProperty] @@ -123,8 +121,8 @@ public MainWindowViewModel() //Apply customization for Single TC Mode Knossos.globalSettings.mainMenuOpen = CustomLauncher.MenuOpenFirstTime; AppTitle = CustomLauncher.WindowTitle + " v" + Knossos.AppVersion; - WindowHeight = CustomLauncher.WindowHeight.HasValue ? CustomLauncher.WindowHeight.Value : 1200; - WindowWidth = CustomLauncher.WindowWidth.HasValue ? CustomLauncher.WindowWidth.Value : 700; + WindowHeight = CustomLauncher.WindowHeight; + WindowWidth = CustomLauncher.WindowWidth; MinWindowWidth = CustomLauncher.MinWindowWidth.HasValue ? CustomLauncher.MinWindowWidth.Value : 900; MinWindowHeight = CustomLauncher.MinWindowHeight.HasValue ? CustomLauncher.MinWindowHeight.Value : 500; CustomHomeVM = new CustomHomeViewModel(); @@ -147,6 +145,7 @@ public MainWindowViewModel() MainWindow.instance?.FixMarginButtomTasks(); } } + MainWindow.instance?.SetSize(WindowWidth,WindowHeight); if (!Knossos.initIsComplete) { //Normal Startup diff --git a/Knossos.NET/Views/Windows/MainWindow.axaml b/Knossos.NET/Views/Windows/MainWindow.axaml index 79a98275..9c2511f1 100644 --- a/Knossos.NET/Views/Windows/MainWindow.axaml +++ b/Knossos.NET/Views/Windows/MainWindow.axaml @@ -4,8 +4,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:v="using:Knossos.NET.Views" - Width="{Binding WindowWidth}" - Height="{Binding WindowHeight}" MinWidth="{Binding MinWindowWidth}" MinHeight="{Binding MinWindowHeight}" x:DataType="vm:MainWindowViewModel" diff --git a/Knossos.NET/Views/Windows/MainWindow.axaml.cs b/Knossos.NET/Views/Windows/MainWindow.axaml.cs index 1893f9e3..8ec6360f 100644 --- a/Knossos.NET/Views/Windows/MainWindow.axaml.cs +++ b/Knossos.NET/Views/Windows/MainWindow.axaml.cs @@ -34,6 +34,19 @@ public void FixMarginButtomTasks() } } + /// + /// Change size of the main window + /// + /// + /// + public void SetSize(double? width, double? height) + { + if(width.HasValue) + this.Width = width.Value; + if(height.HasValue) + this.Height = height.Value; + } + protected override async void OnClosing(WindowClosingEventArgs e) { //Intercept closing, do stuff, then re-call close From a8abe3da0d46ea536e15d8ff36f2a41446a91061 Mon Sep 17 00:00:00 2001 From: Salvador Cipolla Date: Sun, 9 Feb 2025 08:40:15 -0300 Subject: [PATCH 2/2] only create one mainviewmodel --- Knossos.NET/App.axaml.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Knossos.NET/App.axaml.cs b/Knossos.NET/App.axaml.cs index 7c637a5e..7a08c20e 100644 --- a/Knossos.NET/App.axaml.cs +++ b/Knossos.NET/App.axaml.cs @@ -51,12 +51,22 @@ public override void OnFrameworkInitializationCompleted() private void CreateMainWindow(IClassicDesktopStyleApplicationLifetime desktop) { - desktop.MainWindow = new MainWindow + if (mainVM == null) { - DataContext = new MainWindowViewModel() - }; + desktop.MainWindow = new MainWindow + { + DataContext = new MainWindowViewModel() + }; - mainVM = desktop.MainWindow.DataContext as MainWindowViewModel; + mainVM = desktop.MainWindow.DataContext as MainWindowViewModel; + } + else + { + desktop.MainWindow = new MainWindow + { + DataContext = mainVM + }; + } desktop.MainWindow.Closing += (_, __) => {