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();