diff --git a/src/headers/utility.hpp b/src/headers/utility.hpp index 4207b30b..99ef9678 100644 --- a/src/headers/utility.hpp +++ b/src/headers/utility.hpp @@ -67,3 +67,5 @@ void populateSceneSelection(QComboBox *sel, bool addPrevious = false, void populateSourcesWithFilterSelection(QComboBox *list); void populateFilterSelection(QComboBox *list, OBSWeakSource weakSource = nullptr); +void populateSceneItemSelection(QComboBox *list, + OBSWeakSource sceneWeakSource = nullptr); diff --git a/src/macro-action-scene-visibility.cpp b/src/macro-action-scene-visibility.cpp index ab3d7ff1..d7ac9079 100644 --- a/src/macro-action-scene-visibility.cpp +++ b/src/macro-action-scene-visibility.cpp @@ -101,36 +101,6 @@ static inline void populateActionSelection(QComboBox *list) } } -static bool enumItem(obs_scene_t *, obs_sceneitem_t *item, void *ptr) -{ - std::set *names = reinterpret_cast *>(ptr); - - if (obs_sceneitem_is_group(item)) { - obs_scene_t *scene = obs_sceneitem_group_get_scene(item); - obs_scene_enum_items(scene, enumItem, ptr); - } - auto name = obs_source_get_name(obs_sceneitem_get_source(item)); - names->emplace(name); - return true; -} - -static inline void populateSceneItems(QComboBox *list, - OBSWeakSource sceneWeakSource = nullptr) -{ - std::set names; - auto s = obs_weak_source_get_source(sceneWeakSource); - auto scene = obs_scene_from_source(s); - obs_scene_enum_items(scene, enumItem, &names); - obs_source_release(s); - - for (auto &name : names) { - list->addItem(name); - } - list->model()->sort(0); - addSelectionEntry(list, obs_module_text("AdvSceneSwitcher.selectItem")); - list->setCurrentIndex(0); -} - MacroActionSceneVisibilityEdit::MacroActionSceneVisibilityEdit( QWidget *parent, std::shared_ptr entryData) : QWidget(parent) @@ -173,7 +143,7 @@ void MacroActionSceneVisibilityEdit::UpdateEntryData() _actions->setCurrentIndex(static_cast(_entryData->_action)); _scenes->setCurrentText(GetWeakSourceName(_entryData->_scene).c_str()); - populateSceneItems(_sources, _entryData->_scene); + populateSceneItemSelection(_sources, _entryData->_scene); _sources->setCurrentText( GetWeakSourceName(_entryData->_source).c_str()); } @@ -188,7 +158,7 @@ void MacroActionSceneVisibilityEdit::SceneChanged(const QString &text) _entryData->_scene = GetWeakSourceByQString(text); } _sources->clear(); - populateSceneItems(_sources, _entryData->_scene); + populateSceneItemSelection(_sources, _entryData->_scene); } void MacroActionSceneVisibilityEdit::SourceChanged(const QString &text) diff --git a/src/utility.cpp b/src/utility.cpp index db1f4b0e..67ab12b4 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -584,6 +585,36 @@ void populateFilterSelection(QComboBox *list, OBSWeakSource weakSource) list->setCurrentIndex(0); } +static bool enumSceneItem(obs_scene_t *, obs_sceneitem_t *item, void *ptr) +{ + std::set *names = reinterpret_cast *>(ptr); + + if (obs_sceneitem_is_group(item)) { + obs_scene_t *scene = obs_sceneitem_group_get_scene(item); + obs_scene_enum_items(scene, enumSceneItem, ptr); + } + auto name = obs_source_get_name(obs_sceneitem_get_source(item)); + names->emplace(name); + return true; +} + +void populateSceneItemSelection(QComboBox *list, + OBSWeakSource sceneWeakSource) +{ + std::set names; + auto s = obs_weak_source_get_source(sceneWeakSource); + auto scene = obs_scene_from_source(s); + obs_scene_enum_items(scene, enumSceneItem, &names); + obs_source_release(s); + + for (auto &name : names) { + list->addItem(name); + } + list->model()->sort(0); + addSelectionEntry(list, obs_module_text("AdvSceneSwitcher.selectItem")); + list->setCurrentIndex(0); +} + QMetaObject::Connection PulseWidget(QWidget *widget, QColor endColor, QColor startColor, QString specifier) {