diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 14a7092bd..141774a1f 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -86,6 +86,8 @@ HideTransition="Hide Transition"
None="None"
StudioMode.Preview="Preview"
StudioMode.Program="Program"
+StudioMode.PreviewSceneName="Preview: %1"
+StudioMode.ProgramSceneName="Program: %1"
ShowInMultiview="Show in Multiview"
VerticalLayout="Vertical Layout"
Group="Group"
diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui
index 9ddce5dcb..514d07aa3 100644
--- a/UI/forms/OBSBasic.ui
+++ b/UI/forms/OBSBasic.ui
@@ -42,13 +42,13 @@
0
- 0
+ 4
0
- 0
+ 4
0
@@ -158,11 +158,20 @@
-
+
+
+ 0
+ 0
+
+
- StudioMode.Preview
+ StudioMode.PreviewSceneName
- Qt::AlignBottom|Qt::AlignHCenter
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ previewProgramLabels
diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp
index 1382e12d6..8a8d709fe 100644
--- a/UI/window-basic-main-transitions.cpp
+++ b/UI/window-basic-main-transitions.cpp
@@ -265,6 +265,7 @@ void OBSBasic::TransitionStopped()
}
EnableTransitionWidgets(true);
+ UpdatePreviewProgramIndicators();
if (api) {
api->on_event(OBS_FRONTEND_EVENT_TRANSITION_STOPPED);
@@ -699,6 +700,7 @@ void OBSBasic::SetCurrentScene(OBSSource scene, bool force)
}
UpdateContextBar(true);
+ UpdatePreviewProgramIndicators();
if (scene) {
bool userSwitched = (!force && !disableSaving);
@@ -1578,8 +1580,6 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
if (IsPreviewProgramMode() == enabled)
return;
- ui->previewLabel->setHidden(!enabled);
-
ui->modeSwitch->setChecked(enabled);
os_atomic_set_bool(&previewProgramMode, enabled);
@@ -1618,10 +1618,10 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
RefreshQuickTransitions();
- programLabel = new QLabel(QTStr("StudioMode.Program"), this);
- programLabel->setSizePolicy(QSizePolicy::Preferred,
+ programLabel =
+ new QLabel(QTStr("StudioMode.ProgramSceneLabel"), this);
+ programLabel->setSizePolicy(QSizePolicy::Ignored,
QSizePolicy::Preferred);
- programLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
programLabel->setProperty("themeID", "previewProgramLabels");
programWidget = new QWidget();
@@ -1633,11 +1633,6 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
programLayout->addWidget(programLabel);
programLayout->addWidget(program);
- bool labels = config_get_bool(GetGlobalConfig(), "BasicWindow",
- "StudioModeLabels");
-
- programLabel->setHidden(!labels);
-
programWidget->setLayout(programLayout);
ui->previewLayout->addWidget(programOptions);
@@ -1822,3 +1817,33 @@ int OBSBasic::GetOverrideTransitionDuration(OBSSource source)
return (int)obs_data_get_int(data, "transition_duration");
}
+
+void OBSBasic::UpdatePreviewProgramIndicators()
+{
+ bool labels = previewProgramMode ? config_get_bool(GetGlobalConfig(),
+ "BasicWindow",
+ "StudioModeLabels")
+ : false;
+
+ ui->previewLabel->setVisible(labels);
+
+ if (programLabel)
+ programLabel->setVisible(labels);
+
+ if (!labels)
+ return;
+
+ QString preview = QTStr("StudioMode.PreviewSceneName")
+ .arg(QT_UTF8(obs_source_get_name(
+ GetCurrentSceneSource())));
+
+ QString program =
+ QTStr("StudioMode.ProgramSceneName")
+ .arg(QT_UTF8(obs_source_get_name(GetProgramSource())));
+
+ if (ui->previewLabel->text() != preview)
+ ui->previewLabel->setText(preview);
+
+ if (programLabel && programLabel->text() != program)
+ programLabel->setText(program);
+}
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
index bbc8fc575..a76479e33 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
@@ -455,17 +455,6 @@ OBSBasic::OBSBasic(QWidget *parent)
QPoint newPos = curPos + statsDockPos;
statsDock->move(newPos);
- ui->previewLabel->setProperty("themeID", "previewProgramLabels");
- ui->previewLabel->style()->polish(ui->previewLabel);
-
- bool labels = config_get_bool(GetGlobalConfig(), "BasicWindow",
- "StudioModeLabels");
-
- if (!previewProgramMode)
- ui->previewLabel->setHidden(true);
- else
- ui->previewLabel->setHidden(!labels);
-
ui->previewDisabledWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->previewDisabledWidget,
SIGNAL(customContextMenuRequested(const QPoint &)), this,
@@ -2998,6 +2987,7 @@ void OBSBasic::RenameSources(OBSSource source, QString newName,
OBSProjector::UpdateMultiviewProjectors();
UpdateContextBar();
+ UpdatePreviewProgramIndicators();
}
void OBSBasic::ClearContextBar()
@@ -4317,11 +4307,7 @@ void OBSBasic::ResetUI()
else
ui->previewLayout->setDirection(QBoxLayout::LeftToRight);
- if (previewProgramMode)
- ui->previewLabel->setHidden(!labels);
-
- if (programLabel)
- programLabel->setHidden(!labels);
+ UpdatePreviewProgramIndicators();
}
int OBSBasic::ResetVideo()
diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
index feef6a65f..c342dcd4a 100644
--- a/UI/window-basic-main.hpp
+++ b/UI/window-basic-main.hpp
@@ -534,6 +534,8 @@ private:
void ReceivedIntroJson(const QString &text);
void ShowWhatsNew(const QString &url);
+ void UpdatePreviewProgramIndicators();
+
#ifdef BROWSER_AVAILABLE
QList> extraBrowserDocks;
QList> extraBrowserDockActions;