diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 1d916569c..001cdf4f0 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -219,6 +219,12 @@ Deinterlacing.Yadif2x="Yadif 2x"
Deinterlacing.TopFieldFirst="Top Field First"
Deinterlacing.BottomFieldFirst="Bottom Field First"
+# volume control accessibility text
+VolControl.SliderUnmuted="Volume slider for '%1': %2"
+VolControl.SliderMuted="Volume slider for '%1': %2 (currently muted)"
+VolControl.Mute="Mute '%1'"
+VolControl.Properties="Properties for '%1'"
+
# add scene dialog
Basic.Main.AddSceneDlg.Title="Add Scene"
Basic.Main.AddSceneDlg.Text="Please enter the name of the scene"
diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui
index 912aa338a..92aa8ed16 100644
--- a/UI/forms/OBSBasic.ui
+++ b/UI/forms/OBSBasic.ui
@@ -608,6 +608,9 @@
0
+
+ Transition
+
-
@@ -754,10 +757,16 @@
Basic.TransitionDuration
+
+ transitionDuration
+
-
+
+ Basic.TransitionDuration
+
ms
diff --git a/UI/volume-control.cpp b/UI/volume-control.cpp
index 4fa7a0e09..ba6620986 100644
--- a/UI/volume-control.cpp
+++ b/UI/volume-control.cpp
@@ -1,5 +1,6 @@
#include "volume-control.hpp"
#include "qt-wrappers.hpp"
+#include "obs-app.hpp"
#include "mute-checkbox.hpp"
#include "slider-absoluteset-style.hpp"
#include
@@ -86,8 +87,19 @@ void VolControl::SliderChanged(int vol)
void VolControl::updateText()
{
- volLabel->setText(QString::number(obs_fader_get_db(obs_fader), 'f', 1)
- .append(" dB"));
+ QString db = QString::number(obs_fader_get_db(obs_fader), 'f', 1)
+ .append(" dB");
+ volLabel->setText(db);
+
+ bool muted = obs_source_muted(source);
+ const char *accTextLookup = muted
+ ? "VolControl.SliderMuted"
+ : "VolControl.SliderUnmuted";
+
+ QString sourceName = obs_source_get_name(source);
+ QString accText = QTStr(accTextLookup).arg(sourceName, db);
+
+ slider->setAccessibleName(accText);
}
QString VolControl::GetName() const
@@ -126,7 +138,9 @@ VolControl::VolControl(OBSSource source_, bool showConfig)
QFont font = nameLabel->font();
font.setPointSize(font.pointSize()-1);
- nameLabel->setText(obs_source_get_name(source));
+ QString sourceName = obs_source_get_name(source);
+
+ nameLabel->setText(sourceName);
nameLabel->setFont(font);
volLabel->setFont(font);
slider->setMinimum(0);
@@ -140,7 +154,10 @@ VolControl::VolControl(OBSSource source_, bool showConfig)
textLayout->setAlignment(nameLabel, Qt::AlignLeft);
textLayout->setAlignment(volLabel, Qt::AlignRight);
- mute->setChecked(obs_source_muted(source));
+ bool muted = obs_source_muted(source);
+ mute->setChecked(muted);
+ mute->setAccessibleName(
+ QTStr("VolControl.Mute").arg(sourceName));
volLayout->addWidget(slider);
volLayout->addWidget(mute);
@@ -159,6 +176,9 @@ VolControl::VolControl(OBSSource source_, bool showConfig)
config->setMaximumSize(22, 22);
config->setAutoDefault(false);
+ config->setAccessibleName(QTStr("VolControl.Properties")
+ .arg(sourceName));
+
connect(config, &QAbstractButton::clicked,
this, &VolControl::EmitConfigClicked);