From 98f5714b925eb35171d159dfc8f715936844b306 Mon Sep 17 00:00:00 2001 From: Exeldro Date: Wed, 10 Jun 2026 14:17:36 +0200 Subject: [PATCH] frontend: Fix pasting scene item on not the current scene --- frontend/dialogs/OBSBasicSourceSelect.cpp | 12 +++++++----- frontend/dialogs/OBSBasicSourceSelect.hpp | 2 +- frontend/widgets/OBSBasic_Clipboard.cpp | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/frontend/dialogs/OBSBasicSourceSelect.cpp b/frontend/dialogs/OBSBasicSourceSelect.cpp index 603515803..e06b1a02d 100644 --- a/frontend/dialogs/OBSBasicSourceSelect.cpp +++ b/frontend/dialogs/OBSBasicSourceSelect.cpp @@ -148,15 +148,17 @@ void setupSceneItem(void *_data, obs_scene_t *scene) } std::optional setupExistingSource(std::string_view uuid, bool visible, bool duplicate, - SourceCopyInfo *info = nullptr) + SourceCopyInfo *info = nullptr, OBSScene scene = nullptr) { OBSSourceAutoRelease temp = obs_get_source_by_uuid(uuid.data()); if (!temp) { return std::nullopt; } - OBSBasic *main = OBSBasic::Get(); - OBSScene scene = main->GetCurrentScene(); + if (!scene) { + OBSBasic *main = OBSBasic::Get(); + scene = main->GetCurrentScene(); + } if (!scene) { return std::nullopt; } @@ -310,7 +312,7 @@ void OBSBasicSourceSelect::obsSourceRemoved(void *data, calldata_t *params) Qt::QueuedConnection, Q_ARG(QString, QString::fromUtf8(uuidPointer))); } -void OBSBasicSourceSelect::sourcePaste(SourceCopyInfo &info, bool duplicate) +void OBSBasicSourceSelect::sourcePaste(SourceCopyInfo &info, bool duplicate, OBSScene scene) { OBSSource source = OBSGetStrongRef(info.weak_source); if (!source) { @@ -319,7 +321,7 @@ void OBSBasicSourceSelect::sourcePaste(SourceCopyInfo &info, bool duplicate) std::string uuid = obs_source_get_uuid(source); - setupExistingSource(uuid, info.visible, duplicate, &info); + setupExistingSource(uuid, info.visible, duplicate, &info, scene); } void OBSBasicSourceSelect::showEvent(QShowEvent *) diff --git a/frontend/dialogs/OBSBasicSourceSelect.hpp b/frontend/dialogs/OBSBasicSourceSelect.hpp index 585f882a1..ee39fb006 100644 --- a/frontend/dialogs/OBSBasicSourceSelect.hpp +++ b/frontend/dialogs/OBSBasicSourceSelect.hpp @@ -38,7 +38,7 @@ public: OBSSource newSource; - static void sourcePaste(SourceCopyInfo &info, bool duplicate); + static void sourcePaste(SourceCopyInfo &info, bool duplicate, OBSScene scene = nullptr); protected: void showEvent(QShowEvent *event) override; diff --git a/frontend/widgets/OBSBasic_Clipboard.cpp b/frontend/widgets/OBSBasic_Clipboard.cpp index 818991f10..27afe216f 100644 --- a/frontend/widgets/OBSBasic_Clipboard.cpp +++ b/frontend/widgets/OBSBasic_Clipboard.cpp @@ -149,7 +149,7 @@ void OBSBasic::pasteSceneItem(OBSScene scene, bool duplicate) continue; } - OBSBasicSourceSelect::sourcePaste(copyInfo, duplicate); + OBSBasicSourceSelect::sourcePaste(copyInfo, duplicate, scene); RefreshSources(scene); }