From 179cbd48f0a3fcbf85cd90f8f5a55a3fbd7c0906 Mon Sep 17 00:00:00 2001 From: Shaolin Date: Wed, 14 Mar 2018 21:39:14 -0300 Subject: [PATCH 1/3] UI: Remove unnecessary casts --- UI/window-basic-main.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index da9ddfcb2..a9695fe90 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -3520,10 +3520,10 @@ static void AddProjectorMenuMonitors(QMenu *parent, QObject *target, QString str = QString("%1 %2: %3x%4 @ %5,%6"). arg(QTStr("Display"), QString::number(i), - QString::number((int)screenGeometry.width()), - QString::number((int)screenGeometry.height()), - QString::number((int)screenGeometry.x()), - QString::number((int)screenGeometry.y())); + QString::number(screenGeometry.width()), + QString::number(screenGeometry.height()), + QString::number(screenGeometry.x()), + QString::number(screenGeometry.y())); action = parent->addAction(str, target, slot); action->setProperty("monitor", i); From 39a40764e6e28ba83ce535fd35d8c0aece07ecf2 Mon Sep 17 00:00:00 2001 From: Shaolin Date: Wed, 14 Mar 2018 21:34:41 -0300 Subject: [PATCH 2/3] 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, From 229feefbb94beb152ea7d497630894f7a70d9512 Mon Sep 17 00:00:00 2001 From: Shaolin Date: Thu, 15 Mar 2018 04:24:20 -0300 Subject: [PATCH 3/3] UI: Refresh multiview projector menu per click --- UI/window-basic-main.cpp | 14 ++++++++++---- UI/window-basic-main.hpp | 3 +++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index d969106d3..44327a4c3 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -1647,15 +1647,21 @@ void OBSBasic::OBSInit() ui->viewMenu->addSeparator(); - QMenu *multiviewProjectorMenu = new QMenu(QTStr("MultiviewProjector")); - AddProjectorMenuMonitors(multiviewProjectorMenu, this, - SLOT(OpenMultiviewProjector())); + multiviewProjectorMenu = new QMenu(QTStr("MultiviewProjector")); ui->viewMenu->addMenu(multiviewProjectorMenu); - + connect(ui->viewMenu->menuAction(), &QAction::hovered, this, + &OBSBasic::UpdateMultiviewProjectorMenu); ui->viewMenu->addAction(QTStr("MultiviewWindowed"), this, SLOT(OpenMultiviewWindow())); } +void OBSBasic::UpdateMultiviewProjectorMenu() +{ + multiviewProjectorMenu->clear(); + AddProjectorMenuMonitors(multiviewProjectorMenu, this, + SLOT(OpenMultiviewProjector())); +} + void OBSBasic::InitHotkeys() { ProfileScope("OBSBasic::InitHotkeys"); diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 30a1e983c..5e7cadab8 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -186,6 +186,9 @@ private: QPointer exit; QPointer trayMenu; + QPointer multiviewProjectorMenu; + void UpdateMultiviewProjectorMenu(); + void DrawBackdrop(float cx, float cy); void SetupEncoders();