diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index e4e4c72fa..936d01474 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -1088,7 +1088,7 @@ void OBSBasic::HideTransitionProperties() } void OBSBasic::PasteShowHideTransition(obs_sceneitem_t *item, bool show, - obs_source_t *tr) + obs_source_t *tr, int duration) { int64_t sceneItemId = obs_sceneitem_get_id(item); std::string sceneUUID = obs_source_get_uuid( @@ -1114,6 +1114,7 @@ void OBSBasic::PasteShowHideTransition(obs_sceneitem_t *item, bool show, OBSSourceAutoRelease dup = obs_source_duplicate(tr, obs_source_get_name(tr), true); obs_sceneitem_set_transition(item, show, dup); + obs_sceneitem_set_transition_duration(item, show, duration); OBSDataAutoRelease transitionData = obs_sceneitem_transition_save(item, show); @@ -1273,7 +1274,10 @@ QMenu *OBSBasic::CreateVisibilityTransitionMenu(bool visible) reinterpret_cast(App()->GetMainWindow()); OBSSceneItem item = main->GetCurrentSceneItem(); obs_source_t *tr = obs_sceneitem_get_transition(item, visible); + int trDur = + obs_sceneitem_get_transition_duration(item, visible); main->copySourceTransition = obs_source_get_weak_source(tr); + main->copySourceTransitionDuration = trDur; }; menu->addSeparator(); action = menu->addAction(QT_UTF8(Str("Copy"))); @@ -1285,6 +1289,7 @@ QMenu *OBSBasic::CreateVisibilityTransitionMenu(bool visible) OBSBasic *main = reinterpret_cast(App()->GetMainWindow()); OBSSource tr = OBSGetStrongRef(main->copySourceTransition); + int trDuration = main->copySourceTransitionDuration; if (!tr) return; @@ -1294,7 +1299,7 @@ QMenu *OBSBasic::CreateVisibilityTransitionMenu(bool visible) if (!item) continue; - PasteShowHideTransition(item, show, tr); + PasteShowHideTransition(item, show, tr, trDuration); } }; diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 2078b6303..7a15f13f9 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -250,6 +250,7 @@ private: obs_sceneitem_crop copiedCropInfo; bool hasCopiedTransform = false; OBSWeakSourceAutoRelease copySourceTransition; + int copySourceTransitionDuration; bool closing = false; bool clearingFailed = false; @@ -487,7 +488,7 @@ private: void CreateDefaultQuickTransitions(); void PasteShowHideTransition(obs_sceneitem_t *item, bool show, - obs_source_t *tr); + obs_source_t *tr, int duration); QMenu *CreatePerSceneTransitionMenu(); QMenu *CreateVisibilityTransitionMenu(bool visible);