From be9e0fe5114f6c0bed61db461fc3c044fcc72a08 Mon Sep 17 00:00:00 2001 From: Dmitry Stepanov Date: Fri, 18 Sep 2026 21:19:54 +0300 Subject: [PATCH] support grid snapping for ui widgets --- editor/src/ui_scene/interaction/move_mode.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/editor/src/ui_scene/interaction/move_mode.rs b/editor/src/ui_scene/interaction/move_mode.rs index 1ef155971..e51142ba7 100644 --- a/editor/src/ui_scene/interaction/move_mode.rs +++ b/editor/src/ui_scene/interaction/move_mode.rs @@ -170,7 +170,7 @@ impl InteractionMode for MoveWidgetsInteractionMode { controller: &mut dyn SceneController, _engine: &mut Engine, _frame_size: Vector2, - _settings: &Settings, + settings: &Settings, ) { let Some(ui_scene) = controller.downcast_mut::() else { return; @@ -189,12 +189,16 @@ impl InteractionMode for MoveWidgetsInteractionMode { new_screen_space_position.x, new_screen_space_position.y, )); + let snapped_coords = settings + .move_mode_settings + .try_snap_vector_to_grid(new_local_position.coords.to_homogeneous()) + .xy(); ui_scene .ui .node_mut(entry.widget) - .set_desired_local_position(new_local_position.coords); + .set_desired_local_position(snapped_coords); ui_scene.ui.invalidate_layout(); - entry.new_local_position = new_local_position.coords; + entry.new_local_position = snapped_coords; } } }