diff --git a/lib/features/analysis/analysis_screen.dart b/lib/features/analysis/analysis_screen.dart index 99aeb056..f97d142a 100644 --- a/lib/features/analysis/analysis_screen.dart +++ b/lib/features/analysis/analysis_screen.dart @@ -507,14 +507,19 @@ class _AnalysisScreenContentState extends State<_AnalysisScreenContent> { } }, - // 3. GLISSER : On déplace l'impact verrouillé en temps réel sous le doigt + // 3. GLISSER : On déplace l'impact verrouillé en temps réel avec un décalage visuel onLongPressMoveUpdate: (LongPressMoveUpdateDetails details) { if (_movingShotId == null) return; final RenderBox? box = _imageKey.currentContext?.findRenderObject() as RenderBox?; if (box == null) return; - final localOffset = box.globalToLocal(details.globalPosition); + // CORRECTION : On applique un décalage de pixels (Offset) vers le haut et la gauche + // -25 pixels sur l'axe X (vers la gauche) et -35 pixels sur l'axe Y (vers le haut) + // pour que l'impact sorte de dessous la pulpe du doigt ! + final adjustedGlobalPosition = details.globalPosition + const Offset(-25, -35); + + final localOffset = box.globalToLocal(adjustedGlobalPosition); // Calcul des coordonnées relatives bridées entre 0.0 et 1.0 (pour pas sortir de la photo) final relX = (localOffset.dx / box.size.width).clamp(0.0, 1.0);