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
+