UI: Watch for refresh signal in source list

This commit is contained in:
jp9000 2020-02-07 16:44:10 -08:00
parent 6d0ef75663
commit 7c9d227f1e
3 changed files with 24 additions and 0 deletions

View file

@ -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();

View file

@ -2541,6 +2541,8 @@ void OBSBasic::AddScene(OBSSource source)
this),
std::make_shared<OBSSignal>(handler, "reorder",
OBSBasic::SceneReordered, this),
std::make_shared<OBSSignal>(handler, "refresh",
OBSBasic::SceneRefreshed, this),
});
item->setData(static_cast<int>(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<OBSBasic *>(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<OBSBasic *>(data);

View file

@ -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);