From c7897acddfc69b4d8fe5b88dc6af510394c7687a Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sat, 2 Jun 2018 06:52:23 -0700 Subject: [PATCH] UI: Use vector value for nudge callback --- UI/window-basic-main.cpp | 56 +++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index c87d16e13..2adccd734 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -5604,44 +5604,40 @@ void OBSBasic::TogglePreview() EnablePreviewDisplay(previewEnabled); } -void OBSBasic::Nudge(int dist, MoveDir dir) +static bool nudge_callback(obs_scene_t*, obs_sceneitem_t *item, void *param) { - if (ui->preview->Locked()) - return; - - struct MoveInfo { - float dist; - MoveDir dir; - } info = {(float)dist, dir}; + if (obs_sceneitem_locked(item)) + return true; - auto func = [] (obs_scene_t*, obs_sceneitem_t *item, void *param) - { - if (obs_sceneitem_locked(item)) - return true; + struct vec2 &offset = *reinterpret_cast(param); + struct vec2 pos; - MoveInfo *info = reinterpret_cast(param); - struct vec2 dir; - struct vec2 pos; + if (!obs_sceneitem_selected(item)) { + return true; + } - vec2_set(&dir, 0.0f, 0.0f); + obs_sceneitem_get_pos(item, &pos); + vec2_add(&pos, &pos, &offset); + obs_sceneitem_set_pos(item, &pos); + return true; +} - if (!obs_sceneitem_selected(item)) - return true; +void OBSBasic::Nudge(int dist, MoveDir dir) +{ + if (ui->preview->Locked()) + return; - switch (info->dir) { - case MoveDir::Up: dir.y = -info->dist; break; - case MoveDir::Down: dir.y = info->dist; break; - case MoveDir::Left: dir.x = -info->dist; break; - case MoveDir::Right: dir.x = info->dist; break; - } + struct vec2 offset; + vec2_set(&offset, 0.0f, 0.0f); - obs_sceneitem_get_pos(item, &pos); - vec2_add(&pos, &pos, &dir); - obs_sceneitem_set_pos(item, &pos); - return true; - }; + switch (dir) { + case MoveDir::Up: offset.y = (float)-dist; break; + case MoveDir::Down: offset.y = (float) dist; break; + case MoveDir::Left: offset.x = (float)-dist; break; + case MoveDir::Right: offset.x = (float) dist; break; + } - obs_scene_enum_items(GetCurrentScene(), func, &info); + obs_scene_enum_items(GetCurrentScene(), nudge_callback, &offset); } void OBSBasic::NudgeUp() {Nudge(1, MoveDir::Up);} -- GitLab