diff --git a/Utils.cpp b/Utils.cpp index 3cc7d209..da2f82a6 100644 --- a/Utils.cpp +++ b/Utils.cpp @@ -334,7 +334,7 @@ obs_scene_t* Utils::GetPreviewScene() return nullptr; } -void Utils::SetPreviewScene(const char* name) +bool Utils::SetPreviewScene(const char* name) { if (IsPreviewModeActive()) { @@ -342,7 +342,14 @@ void Utils::SetPreviewScene(const char* name) QList matchingItems = sceneList->findItems(name, Qt::MatchExactly); if (matchingItems.count() > 0) + { sceneList->setCurrentItem(matchingItems.first()); + return true; + } + else + { + return false; + } } } diff --git a/Utils.h b/Utils.h index c0e39398..7e52faa4 100644 --- a/Utils.h +++ b/Utils.h @@ -59,7 +59,7 @@ class Utils static void TogglePreviewMode(); static obs_scene_t* GetPreviewScene(); - static void SetPreviewScene(const char* name); + static bool SetPreviewScene(const char* name); static void TransitionToProgram(); static const char* OBSVersionString(); diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index ffaab8bc..67eb67b9 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -943,9 +943,12 @@ void WSRequestHandler::HandleSetPreviewScene(WSRequestHandler *req) } const char* scene_name = obs_data_get_string(req->data, "scene-name"); - Utils::SetPreviewScene(scene_name); + bool success = Utils::SetPreviewScene(scene_name); - req->SendOKResponse(); + if (success) + req->SendOKResponse(); + else + req->SendErrorResponse("specified scene doesn't exist"); } void WSRequestHandler::HandleTransitionToProgram(WSRequestHandler *req)