From 7c9d227f1ef783c8b0ebb036afb87d97b756f3c0 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Fri, 7 Feb 2020 16:44:10 -0800 Subject: [PATCH] UI: Watch for refresh signal in source list --- UI/source-tree.hpp | 1 + UI/window-basic-main.cpp | 21 +++++++++++++++++++++ UI/window-basic-main.hpp | 2 ++ 3 files changed, 24 insertions(+) diff --git a/UI/source-tree.hpp b/UI/source-tree.hpp index 00c0d58da..bf5569c85 100644 --- a/UI/source-tree.hpp +++ b/UI/source-tree.hpp @@ -184,6 +184,7 @@ public: public slots: inline void ReorderItems() { GetStm()->ReorderItems(); } + inline void RefreshItems() { GetStm()->SceneChanged(); } void Remove(OBSSceneItem item); void GroupSelectedItems(); void UngroupSelectedGroups(); diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index ea785b149..119d4ded3 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -2541,6 +2541,8 @@ void OBSBasic::AddScene(OBSSource source) this), std::make_shared(handler, "reorder", OBSBasic::SceneReordered, this), + std::make_shared(handler, "refresh", + OBSBasic::SceneRefreshed, this), }); item->setData(static_cast(QtDataRole::OBSSignals), @@ -3240,6 +3242,15 @@ void OBSBasic::ReorderSources(OBSScene scene) SaveProject(); } +void OBSBasic::RefreshSources(OBSScene scene) +{ + if (scene != GetCurrentScene() || ui->sources->IgnoreReorder()) + return; + + ui->sources->RefreshItems(); + SaveProject(); +} + /* OBS Callbacks */ void OBSBasic::SceneReordered(void *data, calldata_t *params) @@ -3252,6 +3263,16 @@ void OBSBasic::SceneReordered(void *data, calldata_t *params) Q_ARG(OBSScene, OBSScene(scene))); } +void OBSBasic::SceneRefreshed(void *data, calldata_t *params) +{ + OBSBasic *window = static_cast(data); + + obs_scene_t *scene = (obs_scene_t *)calldata_ptr(params, "scene"); + + QMetaObject::invokeMethod(window, "RefreshSources", + Q_ARG(OBSScene, OBSScene(scene))); +} + void OBSBasic::SceneItemAdded(void *data, calldata_t *params) { OBSBasic *window = static_cast(data); diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 481244faa..4b2b1e846 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -580,6 +580,7 @@ private slots: void ToggleAlwaysOnTop(); void ReorderSources(OBSScene scene); + void RefreshSources(OBSScene scene); void ProcessHotkey(obs_hotkey_id id, bool pressed); @@ -661,6 +662,7 @@ private slots: private: /* OBS Callbacks */ static void SceneReordered(void *data, calldata_t *params); + static void SceneRefreshed(void *data, calldata_t *params); static void SceneItemAdded(void *data, calldata_t *params); static void SceneItemSelected(void *data, calldata_t *params); static void SceneItemDeselected(void *data, calldata_t *params); -- GitLab