From 31f95c65478fc0f5596f82d8fcc6e8d51d3cf28c Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Thu, 19 Mar 2026 20:48:17 +0100 Subject: [PATCH] Add option to "release the T-Bar" --- data/locale/en-US.ini | 13 ++++++------ plugins/base/macro-action-transition.cpp | 25 ++++++++++++++++++------ plugins/base/macro-action-transition.hpp | 2 ++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index bac8255e..a4c7ce48 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -1087,12 +1087,13 @@ AdvSceneSwitcher.action.studioMode.type.enable="Enable studio mode" AdvSceneSwitcher.action.studioMode.type.disable="Disable studio mode" AdvSceneSwitcher.action.studioMode.entry="{{actions}}{{scenes}}" AdvSceneSwitcher.action.transition="Transition" -AdvSceneSwitcher.action.transition.type.scene="scene transition" -AdvSceneSwitcher.action.transition.type.sceneOverride="scene transition override" -AdvSceneSwitcher.action.transition.type.sourceShow="source show transition" -AdvSceneSwitcher.action.transition.type.sourceHide="source hide transition" -AdvSceneSwitcher.action.transition.type.tbar="T-Bar position" -AdvSceneSwitcher.action.transition.layout.type="Modify{{type}}{{scenes}}{{sources}}" +AdvSceneSwitcher.action.transition.type.scene="Modify scene transition" +AdvSceneSwitcher.action.transition.type.sceneOverride="Modify scene transition override" +AdvSceneSwitcher.action.transition.type.sourceShow="Modify source show transition" +AdvSceneSwitcher.action.transition.type.sourceHide="Modify source hide transition" +AdvSceneSwitcher.action.transition.type.tbar="Modify T-Bar position" +AdvSceneSwitcher.action.transition.type.releaseTbar="Release T-Bar" +AdvSceneSwitcher.action.transition.layout.type="{{type}}{{scenes}}{{sources}}" AdvSceneSwitcher.action.transition.layout.transition="{{setTransition}}Set transition type to{{transitions}}" AdvSceneSwitcher.action.transition.layout.duration="{{setDuration}}Set transition duration to{{duration}}seconds" AdvSceneSwitcher.action.transition.layout.tbar="Set T-Bar position to{{tbarPosition}}" diff --git a/plugins/base/macro-action-transition.cpp b/plugins/base/macro-action-transition.cpp index 0bec6c18..dd201ad4 100644 --- a/plugins/base/macro-action-transition.cpp +++ b/plugins/base/macro-action-transition.cpp @@ -25,6 +25,8 @@ const static std::map actionTypes = { "AdvSceneSwitcher.action.transition.type.sourceHide"}, {MacroActionTransition::Type::TBAR, "AdvSceneSwitcher.action.transition.type.tbar"}, + {MacroActionTransition::Type::RELEASE_TBAR, + "AdvSceneSwitcher.action.transition.type.releaseTbar"}, }; void MacroActionTransition::SetSceneTransition() @@ -84,10 +86,11 @@ void MacroActionTransition::SetTbarPosition() const double percent = std::clamp(_tbarPosition.GetValue(), 0.0, 100.0); const int tbarValue = (int)std::round(percent / 100.0 * 1023.0); obs_frontend_set_tbar_position(tbarValue); +} - if (tbarValue == 0 || tbarValue == 1024) { - obs_frontend_release_tbar(); - } +void MacroActionTransition::ReleaseTbar() +{ + obs_frontend_release_tbar(); } void MacroActionTransition::SetSourceTransition(bool show) @@ -127,6 +130,9 @@ bool MacroActionTransition::PerformAction() case Type::TBAR: SetTbarPosition(); break; + case Type::RELEASE_TBAR: + ReleaseTbar(); + break; } return true; } @@ -156,6 +162,9 @@ void MacroActionTransition::LogAction() const ablog(LOG_INFO, "set T-Bar position to %.2f%%", _tbarPosition.GetValue()); return; + case Type::RELEASE_TBAR: + ablog(LOG_INFO, "release T-Bar"); + return; } if (_setDuration) { ablog(LOG_INFO, "%s duration to %s", msgBegin.c_str(), @@ -208,6 +217,8 @@ std::string MacroActionTransition::GetShortDesc() const _transition.ToString(); case Type::TBAR: return std::to_string(_tbarPosition.GetValue()) + "%"; + case Type::RELEASE_TBAR: + return ""; } return ""; } @@ -398,14 +409,16 @@ void MacroActionTransitionEdit::SetWidgetVisibility() { const bool isTbar = _entryData->_type == MacroActionTransition::Type::TBAR; + const bool isReleaseTbar = _entryData->_type == + MacroActionTransition::Type::RELEASE_TBAR; _sources->setVisible( _entryData->_type == MacroActionTransition::Type::SOURCE_HIDE || _entryData->_type == MacroActionTransition::Type::SOURCE_SHOW); _scenes->setVisible(_entryData->_type != MacroActionTransition::Type::SCENE && - !isTbar); - SetLayoutVisible(_transitionLayout, !isTbar); - SetLayoutVisible(_durationLayout, !isTbar); + !isTbar && !isReleaseTbar); + SetLayoutVisible(_transitionLayout, !isTbar && !isReleaseTbar); + SetLayoutVisible(_durationLayout, !isTbar && !isReleaseTbar); SetLayoutVisible(_tbarLayout, isTbar); adjustSize(); } diff --git a/plugins/base/macro-action-transition.hpp b/plugins/base/macro-action-transition.hpp index 2494e99b..1f6f1b6d 100644 --- a/plugins/base/macro-action-transition.hpp +++ b/plugins/base/macro-action-transition.hpp @@ -30,6 +30,7 @@ public: SOURCE_SHOW, SOURCE_HIDE, TBAR, + RELEASE_TBAR, }; Type _type = Type::SCENE; @@ -46,6 +47,7 @@ private: void SetTransitionOverride(); void SetSourceTransition(bool); void SetTbarPosition(); + void ReleaseTbar(); static bool _registered; static const std::string id;