From 1417aaed0b9e04a722cd60958c5c1303b40b62e3 Mon Sep 17 00:00:00 2001 From: Bane Stojkovic Date: Sun, 7 May 2023 17:30:00 +0200 Subject: [PATCH] Unable to move selected components if one of them is close to being reduced to a point --- .../src/org/diylc/presenter/CalcUtils.java | 8 ++++++++ .../src/org/diylc/presenter/Presenter.java | 5 +++-- .../src/org/diylc/presenter/update.xml | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/diylc/diylc-core/src/org/diylc/presenter/CalcUtils.java b/diylc/diylc-core/src/org/diylc/presenter/CalcUtils.java index c40cf6ab..fb424f13 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/CalcUtils.java +++ b/diylc/diylc-core/src/org/diylc/presenter/CalcUtils.java @@ -62,4 +62,12 @@ public class CalcUtils { } } } + + public static boolean pointsMatch(Point2D point1, Point2D point2, double delta) { + if (Math.abs(point1.getX() - point2.getX()) > delta) + return false; + if (Math.abs(point1.getY() - point2.getY()) > delta) + return false; + return true; + } } diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index 3be751e5..309acd09 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -1364,7 +1364,7 @@ public class Presenter implements IPlugInPort { IDIYComponent component = entry.getKey(); for (int i = 0; i < component.getControlPointCount() - 1 && !skip; i++) for (int j = i + 1; j < component.getControlPointCount() && !skip; j++) - if (component.getControlPoint(i).equals(component.getControlPoint(j))) + if (CalcUtils.pointsMatch(component.getControlPoint(i), component.getControlPoint(j), DrawingManager.CONTROL_POINT_SIZE / 2.0)) skip = true; if (skip) @@ -1396,7 +1396,8 @@ public class Presenter implements IPlugInPort { for (int i = 0; i < controlPoints.length - 1; i++) { for (int j = i + 1; j < controlPoints.length; j++) { - if (controlPoints[i] != null && controlPoints[j] != null && controlPoints[i].equals(controlPoints[j])) { + if (controlPoints[i] != null && controlPoints[j] != null && + CalcUtils.pointsMatch(controlPoints[i], controlPoints[j], DrawingManager.CONTROL_POINT_SIZE / 2.0)) { // Control points collision detected, cannot make // this move. return null; diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 47eb1c8b..a643f59c 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -4369,5 +4369,21 @@ https://github.com/bancika/diy-layout-creator/releases + + + 4 + 38 + 0 + + 2023-04-27 00:00:00.000 CET + + + + BUG_FIX + Unable to move selected components if one of them is close to being reduced to a point + + + https://github.com/bancika/diy-layout-creator/releases +