0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

UI: Allow the transform dialog for group sub-sources

This commit is contained in:
jp9000 2018-08-14 13:05:34 -07:00
parent fb58bcf75f
commit 7bc3c87163

View File

@ -4,23 +4,28 @@
Q_DECLARE_METATYPE(OBSSceneItem); Q_DECLARE_METATYPE(OBSSceneItem);
static OBSSceneItem FindASelectedItem(OBSScene scene) static bool find_sel(obs_scene_t *, obs_sceneitem_t *item, void *param)
{ {
auto func = [] (obs_scene_t *scene, obs_sceneitem_t *item, void *param) OBSSceneItem &dst = *reinterpret_cast<OBSSceneItem*>(param);
{
OBSSceneItem &dst = *reinterpret_cast<OBSSceneItem*>(param);
if (obs_sceneitem_selected(item)) { if (obs_sceneitem_selected(item)) {
dst = item; dst = item;
return false;
}
if (obs_sceneitem_is_group(item)) {
obs_sceneitem_group_enum_items(item, find_sel, param);
if (!!dst) {
return false; return false;
} }
}
UNUSED_PARAMETER(scene); return true;
return true; };
};
static OBSSceneItem FindASelectedItem(OBSScene scene)
{
OBSSceneItem item; OBSSceneItem item;
obs_scene_enum_items(scene, func, &item); obs_scene_enum_items(scene, find_sel, &item);
return item; return item;
} }
@ -63,9 +68,10 @@ OBSBasicTransform::OBSBasicTransform(OBSBasic *parent)
installEventFilter(CreateShortcutFilter()); installEventFilter(CreateShortcutFilter());
OBSScene curScene = main->GetCurrentScene(); OBSSceneItem item = FindASelectedItem(main->GetCurrentScene());
SetScene(curScene); OBSScene scene = obs_sceneitem_get_scene(item);
SetItem(FindASelectedItem(curScene)); SetScene(scene);
SetItem(item);
channelChangedSignal.Connect(obs_get_signal_handler(), "channel_change", channelChangedSignal.Connect(obs_get_signal_handler(), "channel_change",
OBSChannelChanged, this); OBSChannelChanged, this);