From 39a40764e6e28ba83ce535fd35d8c0aece07ecf2 Mon Sep 17 00:00:00 2001 From: Shaolin Date: Wed, 14 Mar 2018 21:34:41 -0300 Subject: [PATCH] UI: Refresh system tray projector menu per click --- UI/window-basic-main.cpp | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index a9695fe90..d969106d3 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -6040,29 +6040,32 @@ void OBSBasic::SystemTrayInit() connect(exit, SIGNAL(triggered()), this, SLOT(close())); - QMenu *previewProjector = new QMenu(QTStr("PreviewProjector")); - AddProjectorMenuMonitors(previewProjector, this, - SLOT(OpenPreviewProjector())); - QMenu *studioProgramProjector = new QMenu( - QTStr("StudioProgramProjector")); - AddProjectorMenuMonitors(studioProgramProjector, this, - SLOT(OpenStudioProgramProjector())); - trayMenu = new QMenu; - trayMenu->addAction(showHide); - trayMenu->addMenu(previewProjector); - trayMenu->addMenu(studioProgramProjector); - trayMenu->addAction(sysTrayStream); - trayMenu->addAction(sysTrayRecord); - trayMenu->addAction(sysTrayReplayBuffer); - trayMenu->addAction(exit); - trayIcon->setContextMenu(trayMenu); } void OBSBasic::IconActivated(QSystemTrayIcon::ActivationReason reason) { - if (reason == QSystemTrayIcon::Trigger) + if (reason == QSystemTrayIcon::Trigger) { ToggleShowHide(); + } else if (reason == QSystemTrayIcon::Context) { + QMenu *previewProjector = new QMenu(QTStr("PreviewProjector")); + AddProjectorMenuMonitors(previewProjector, this, + SLOT(OpenPreviewProjector())); + QMenu *studioProgramProjector = new QMenu( + QTStr("StudioProgramProjector")); + AddProjectorMenuMonitors(studioProgramProjector, this, + SLOT(OpenStudioProgramProjector())); + + trayMenu->clear(); + trayMenu->addAction(showHide); + trayMenu->addMenu(previewProjector); + trayMenu->addMenu(studioProgramProjector); + trayMenu->addAction(sysTrayStream); + trayMenu->addAction(sysTrayRecord); + trayMenu->addAction(sysTrayReplayBuffer); + trayMenu->addAction(exit); + trayMenu->popup(QCursor::pos()); + } } void OBSBasic::SysTrayNotify(const QString &text,