diff --git a/src/main/java/de/neemann/digital/draw/elements/Wire.java b/src/main/java/de/neemann/digital/draw/elements/Wire.java index e9850291f..ab9a31d35 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Wire.java +++ b/src/main/java/de/neemann/digital/draw/elements/Wire.java @@ -185,9 +185,9 @@ public class Wire implements Drawable, Movable, ObservableValueReader { */ public boolean contains(Vector v, int radius) { if (p1.x == p2.x) - return Math.abs(p1.x - v.x) < radius && ((p1.y < v.y && v.y < p2.y) || (p2.y < v.y && v.y < p1.y)); + return Math.abs(p1.x - v.x) < radius && ((p1.y - radius < v.y && v.y < p2.y + radius) || (p2.y - radius < v.y && v.y < p1.y + radius)); else if (p1.y == p2.y) - return Math.abs(p1.y - v.y) < radius && ((p1.x < v.x && v.x < p2.x) || (p2.x < v.x && v.x < p1.x)); + return Math.abs(p1.y - v.y) < radius && ((p1.x - radius < v.x && v.x < p2.x + radius) || (p2.x - radius < v.x && v.x < p1.x + radius)); else { // some simple box tests if (v.x < Math.min(p1.x, p2.x) - radius) return false; diff --git a/src/test/java/de/neemann/digital/draw/elements/WireContainsTest.java b/src/test/java/de/neemann/digital/draw/elements/WireContainsTest.java index fa7b88e1b..0e5a27d1d 100644 --- a/src/test/java/de/neemann/digital/draw/elements/WireContainsTest.java +++ b/src/test/java/de/neemann/digital/draw/elements/WireContainsTest.java @@ -21,6 +21,9 @@ public class WireContainsTest extends TestCase { assertTrue(w.contains(new Vector(5, 2), 5)); assertTrue(w.contains(new Vector(5, -2), 5)); + + assertTrue(w.contains(new Vector(-2, 0), 5)); + assertTrue(w.contains(new Vector(12, 0), 5)); } public void testVertical() { @@ -32,6 +35,9 @@ public class WireContainsTest extends TestCase { assertTrue(w.contains(new Vector(2, 5), 5)); assertTrue(w.contains(new Vector(-2, 5), 5)); + + assertTrue(w.contains(new Vector(0, -2), 5)); + assertTrue(w.contains(new Vector(0, 12), 5)); } public void testDiagonal() {