Browse Source

UI: Use vector value for nudge callback

jp9000 7 years ago
parent
commit
c7897acddf
1 changed files with 26 additions and 30 deletions
  1. 26 30
      UI/window-basic-main.cpp

+ 26 - 30
UI/window-basic-main.cpp

@@ -5604,44 +5604,40 @@ void OBSBasic::TogglePreview()
 	EnablePreviewDisplay(previewEnabled);
 	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<struct vec2*>(param);
+	struct vec2 pos;
 
 
-		MoveInfo *info = reinterpret_cast<MoveInfo*>(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);}
 void OBSBasic::NudgeUp()       {Nudge(1,  MoveDir::Up);}