diff --git a/UI/data/themes/Dark.qss b/UI/data/themes/Dark.qss
index b9ab60a5a..97af215c3 100644
--- a/UI/data/themes/Dark.qss
+++ b/UI/data/themes/Dark.qss
@@ -234,6 +234,10 @@ QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal, QScrollBa
qproperty-icon: url(./Dark/filter.svg);
}
+#contextContainer QPushButton#sourceInteractButton {
+ qproperty-icon: url(./Dark/interact.svg);
+}
+
/* Scenes and Sources toolbar */
QToolBar {
diff --git a/UI/data/themes/Dark/interact.svg b/UI/data/themes/Dark/interact.svg
new file mode 100644
index 000000000..8e2db13c0
--- /dev/null
+++ b/UI/data/themes/Dark/interact.svg
@@ -0,0 +1,3 @@
+
diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui
index 8cc205219..b4cc08378 100644
--- a/UI/forms/OBSBasic.ui
+++ b/UI/forms/OBSBasic.ui
@@ -366,6 +366,35 @@
+ -
+
+
+
+ 0
+ 22
+
+
+
+
+ 16777215
+ 22
+
+
+
+ Interact
+
+
+
+ :/res/images/interact.svg:/res/images/interact.svg
+
+
+ true
+
+
+ contextBarButton
+
+
+
-
diff --git a/UI/forms/images/interact.svg b/UI/forms/images/interact.svg
new file mode 100644
index 000000000..7de881ea4
--- /dev/null
+++ b/UI/forms/images/interact.svg
@@ -0,0 +1,3 @@
+
diff --git a/UI/forms/obs.qrc b/UI/forms/obs.qrc
index 93b09b703..01f594176 100644
--- a/UI/forms/obs.qrc
+++ b/UI/forms/obs.qrc
@@ -51,6 +51,7 @@
images/media/media_previous.svg
images/media/media_restart.svg
images/media/media_stop.svg
+ images/interact.svg
images/settings/output.svg
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
index b3e2742ad..cbd994948 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
@@ -2986,6 +2986,9 @@ void OBSBasic::UpdateContextBar(bool force)
const char *id = obs_source_get_unversioned_id(source);
uint32_t flags = obs_source_get_output_flags(source);
+ ui->sourceInteractButton->setVisible(flags &
+ OBS_SOURCE_INTERACTION);
+
if (flags & OBS_SOURCE_CONTROLLABLE_MEDIA) {
if (!is_network_media_source(source, id)) {
MediaControls *mediaControls =
@@ -3066,6 +3069,7 @@ void OBSBasic::UpdateContextBar(bool force)
ui->sourceFiltersButton->setEnabled(false);
ui->sourcePropertiesButton->setEnabled(false);
+ ui->sourceInteractButton->setVisible(false);
}
}
@@ -8483,3 +8487,8 @@ void OBSBasic::on_sourceFiltersButton_clicked()
{
OpenFilters();
}
+
+void OBSBasic::on_sourceInteractButton_clicked()
+{
+ on_actionInteract_triggered();
+}
diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
index 8738d060b..6cae43c2a 100644
--- a/UI/window-basic-main.hpp
+++ b/UI/window-basic-main.hpp
@@ -961,6 +961,7 @@ private slots:
// Source Context Buttons
void on_sourcePropertiesButton_clicked();
void on_sourceFiltersButton_clicked();
+ void on_sourceInteractButton_clicked();
void on_autoConfigure_triggered();
void on_stats_triggered();