From e5ac1cc82d832f0515364fdb3f02f03bdea8870e Mon Sep 17 00:00:00 2001 From: Jonathan Feenstra <26406078+JonathanFeenstra@users.noreply.github.com> Date: Sat, 3 Jan 2026 15:48:06 +0100 Subject: Add executable setting to minimize MO2 to the system tray while running (#2313) --- src/mainwindow.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ce432196..cd74165e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -67,6 +67,7 @@ along with Mod Organizer. If not, see . #include "shared/appconfig.h" #include "spawn.h" #include "statusbar.h" +#include "systemtraymanager.h" #include #include #include @@ -238,7 +239,8 @@ MainWindow::MainWindow(Settings& settings, OrganizerCore& organizerCore, m_PluginContainer(pluginContainer), m_ArchiveListWriter(std::bind(&MainWindow::saveArchiveList, this)), m_LinkToolbar(nullptr), m_LinkDesktop(nullptr), m_LinkStartMenu(nullptr), - m_NumberOfProblems(0), m_ProblemsCheckRequired(false) + m_SystemTrayManager(nullptr), m_NumberOfProblems(0), + m_ProblemsCheckRequired(false) { // disables incredibly slow menu fade in effect that looks and feels like crap. // this was only happening to users with the windows @@ -265,6 +267,8 @@ MainWindow::MainWindow(Settings& settings, OrganizerCore& organizerCore, languageChange(settings.interface().language()); ui->statusBar->setup(ui, settings); + m_SystemTrayManager = new SystemTrayManager(this, ui->logDock); + { auto& ni = NexusInterface::instance(); @@ -477,6 +481,12 @@ MainWindow::MainWindow(Settings& settings, OrganizerCore& organizerCore, m_Tutorial.expose("espList", m_OrganizerCore.pluginList()); m_OrganizerCore.setUserInterface(this); + m_OrganizerCore.onFinishedRun([=](const QString, unsigned int) { + if (isHidden()) { + m_SystemTrayManager->restoreFromSystemTray(); + } + }); + connect(m_OrganizerCore.modList(), &ModList::showMessage, [=](auto&& message) { showMessage(message); }); @@ -1697,6 +1707,10 @@ void MainWindow::startExeAction() action->setEnabled(true); }); + if (itor->minimizeToSystemTray()) { + m_SystemTrayManager->minimizeToSystemTray(); + } + m_OrganizerCore.processRunner() .setFromExecutable(*itor) .setWaitForCompletion(ProcessRunner::TriggerRefresh) @@ -2271,6 +2285,10 @@ void MainWindow::on_startButton_clicked() ui->startButton->setEnabled(true); }); + if (selectedExecutable->minimizeToSystemTray()) { + m_SystemTrayManager->minimizeToSystemTray(); + } + m_OrganizerCore.processRunner() .setFromExecutable(*selectedExecutable) .setWaitForCompletion(ProcessRunner::TriggerRefresh) -- cgit v1.3.1