diff --git a/UI/TouchControlLayoutScreen.cpp b/UI/TouchControlLayoutScreen.cpp index 65ebb654cf..4483678f89 100644 --- a/UI/TouchControlLayoutScreen.cpp +++ b/UI/TouchControlLayoutScreen.cpp @@ -260,9 +260,16 @@ bool TouchControlLayoutScreen::touch(const TouchInput &touch) { float diffX = (touch.x - startX_); float diffY = -(touch.y - startY_); + // Snap to grid + if (g_Config.bTouchSnapToGrid) { + diffX -= (int)(touch.x - startX_) % (g_Config.iTouchSnapGridSize/2); + diffY += (int)(touch.y - startY_) % (g_Config.iTouchSnapGridSize/2); + } + float movementScale = 0.02f; float newScale = startScale_ + diffY * movementScale; float newSpacing = startSpacing_ + diffX * movementScale; + if (newScale > 3.0f) newScale = 3.0f; if (newScale < 0.5f) newScale = 0.5f; if (newSpacing > 3.0f) newSpacing = 3.0f;