Fix MainWindow startup visibility and OpenSettings logic

- Delay setting desktop.MainWindow until plugins are initialized to prevent auto-show on startup
- Restore missing Hide() method in MainViewModel
- Fix Show() method which was incorrectly calling HideRequested
- Ensure OpenSettings cleanly hides MainWindow before showing SettingsWindow
This commit is contained in:
Hongtao Zhang 2026-01-19 00:19:15 -08:00
parent 32aa3ffdc5
commit d9bfe4995f

View file

@ -25,6 +25,7 @@ public partial class App : Application
private static readonly string ClassName = nameof(App);
private Settings? _settings;
private MainViewModel? _mainVM;
private MainWindow? _mainWindow;
public static IPublicAPI? API { get; private set; }
@ -44,7 +45,8 @@ public partial class App : Application
API = Ioc.Default.GetRequiredService<IPublicAPI>();
_mainVM = Ioc.Default.GetRequiredService<MainViewModel>();
desktop.MainWindow = new MainWindow();
_mainWindow = new MainWindow();
// desktop.MainWindow = _mainWindow; // Prevent auto-show on startup
desktop.ShutdownMode = ShutdownMode.OnExplicitShutdown;
// Initialize hotkeys after window is created
@ -131,6 +133,11 @@ public partial class App : Application
var i18n = Ioc.Default.GetRequiredService<Internationalization>();
i18n.UpdatePluginMetadataTranslations();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = _mainWindow;
}
_mainVM?.OnPluginsReady();
}
catch (Exception e) { Log.Exception(ClassName, "Plugin init failed", e); }