From 01d0f6e49a8d9acba5ae58238bd01a7081d11b44 Mon Sep 17 00:00:00 2001 From: shweet Date: Mon, 17 Nov 2025 17:11:01 -0500 Subject: [PATCH] Grid snapping works with offset --- src/imgui/window/spritesheet_editor.cpp | 12 ++++++++---- src/imgui/window/timeline.cpp | 1 - 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/imgui/window/spritesheet_editor.cpp b/src/imgui/window/spritesheet_editor.cpp index 54ec4e6..57f985e 100644 --- a/src/imgui/window/spritesheet_editor.cpp +++ b/src/imgui/window/spritesheet_editor.cpp @@ -236,13 +236,17 @@ namespace anm2ed::imgui { if (gridSize.x != 0) { - minPoint.x = std::floor(minPoint.x / gridSize.x) * gridSize.x; - maxPoint.x = std::ceil(maxPoint.x / gridSize.x) * gridSize.x; + auto offsetX = static_cast(gridOffset.x); + auto sizeX = static_cast(gridSize.x); + minPoint.x = std::floor((minPoint.x - offsetX) / sizeX) * sizeX + offsetX; + maxPoint.x = std::ceil((maxPoint.x - offsetX) / sizeX) * sizeX + offsetX; } if (gridSize.y != 0) { - minPoint.y = std::floor(minPoint.y / gridSize.y) * gridSize.y; - maxPoint.y = std::ceil(maxPoint.y / gridSize.y) * gridSize.y; + auto offsetY = static_cast(gridOffset.y); + auto sizeY = static_cast(gridSize.y); + minPoint.y = std::floor((minPoint.y - offsetY) / sizeY) * sizeY + offsetY; + maxPoint.y = std::ceil((maxPoint.y - offsetY) / sizeY) * sizeY + offsetY; } } return std::pair{minPoint, maxPoint}; diff --git a/src/imgui/window/timeline.cpp b/src/imgui/window/timeline.cpp index 4249dc8..b8b5383 100644 --- a/src/imgui/window/timeline.cpp +++ b/src/imgui/window/timeline.cpp @@ -1020,7 +1020,6 @@ namespace anm2ed::imgui ImGui::BeginDisabled(!item); { - shortcut(manager.chords[SHORTCUT_ADD]); shortcut(manager.chords[SHORTCUT_INSERT_FRAME]); if (ImGui::Button("Insert", widgetSize)) {