From f1cbf65a3c8402a8b07e56040b2d2e6df6b6ab88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D1=83=D1=80=D0=BD=D0=B0=D1=82=20=D0=90=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=B9?= Date: Wed, 10 Jun 2026 07:24:48 +0300 Subject: [PATCH] Queue desktop tray show action --- Desktop/src/gui/systray.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Desktop/src/gui/systray.cpp b/Desktop/src/gui/systray.cpp index a51abb8c..eab53e30 100644 --- a/Desktop/src/gui/systray.cpp +++ b/Desktop/src/gui/systray.cpp @@ -24,11 +24,19 @@ #include #include #include +#include using namespace Qt::Literals::StringLiterals; namespace OCC { +namespace { + void showSettingsAfterTrayEvent() + { + auto *app = ocApp(); + QMetaObject::invokeMethod(app, [app] { app->showSettings(); }, Qt::QueuedConnection); + } +} Systray::Systray(QObject *parent) : QSystemTrayIcon(parent) @@ -36,7 +44,7 @@ Systray::Systray(QObject *parent) connect(this, &QSystemTrayIcon::activated, this, [](QSystemTrayIcon::ActivationReason reason) { // Left click if (reason == QSystemTrayIcon::Trigger) { - ocApp()->showSettings(); + showSettingsAfterTrayEvent(); } }); connect(AccountManager::instance(), &AccountManager::accountAdded, this, @@ -143,7 +151,8 @@ void Systray::computeContextMenu() Q_ASSERT(!contextMenu()); auto *menu = new QMenu(Theme::instance()->appNameGUI()); - menu->addAction(Theme::instance()->applicationIcon(), tr("Show %1").arg(Theme::instance()->appNameGUI()), ocApp(), &Application::showSettings); + auto *showAction = menu->addAction(Theme::instance()->applicationIcon(), tr("Show %1").arg(Theme::instance()->appNameGUI())); + connect(showAction, &QAction::triggered, this, [] { showSettingsAfterTrayEvent(); }); auto *pauseResume = new QAction(menu); auto updatePauseResumeAction = [pauseResume] { pauseResume->setText(FolderMan::instance()->scheduler()->isRunning() ? tr("Pause synchronizations") : tr("Resume synchronizations"));