diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml
index 5085163a..c6eb8369 100644
--- a/diylc/diylc-core/src/org/diylc/presenter/update.xml
+++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml
@@ -3042,6 +3042,10 @@
2020-04-20 00:00:00.000 CET
+
+ BUG_FIX
+ Some boards (e.g. Breadboard) stop working at certain orientations
+
BUG_FIX
Component leads on resistors, capacitors, etc disappear when they are very short
diff --git a/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java
index 7844cab1..de9724c7 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java
@@ -337,7 +337,8 @@ public abstract class AbstractBoard extends AbstractTransparentComponent
@Override
public Rectangle2D getCachingBounds() {
Point finalSecondPoint = getFinalSecondPoint();
- return new Rectangle2D.Double(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x + 1, finalSecondPoint.y - firstPoint.y + 1);
+ return new Rectangle2D.Double(Math.min(firstPoint.x, finalSecondPoint.x), Math.min(firstPoint.y, finalSecondPoint.y),
+ Math.abs(finalSecondPoint.x - firstPoint.x) + 2, Math.abs(finalSecondPoint.y - firstPoint.y) + 2);
}
public static enum CoordinateType {
diff --git a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java
index c9ee19ab..292247c4 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java
@@ -382,7 +382,8 @@ public class Breadboard extends AbstractComponent {
@Override
public Rectangle2D getCachingBounds() {
Point finalSecondPoint = getControlPoint(1);
- return new Rectangle2D.Double(point.x, point.y, finalSecondPoint.x - point.x + 1, finalSecondPoint.y - point.y + 1);
+ return new Rectangle2D.Double(Math.min(point.x, finalSecondPoint.x), Math.min(point.y, finalSecondPoint.y),
+ Math.abs(finalSecondPoint.x - point.x) + 2, Math.abs(finalSecondPoint.y - point.y) + 2);
}
public enum BreadboardSize {
diff --git a/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java
index fe747dec..c6d176d9 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java
@@ -700,6 +700,7 @@ public class ProtoBoard extends AbstractComponent {
@Override
public Rectangle2D getCachingBounds() {
Point finalSecondPoint = getControlPoint(1);
- return new Rectangle2D.Double(point.x, point.y, finalSecondPoint.x - point.x + 1, finalSecondPoint.y - point.y + 1);
+ return new Rectangle2D.Double(Math.min(point.x, finalSecondPoint.x), Math.min(point.y, finalSecondPoint.y),
+ Math.abs(finalSecondPoint.x - point.x) + 2, Math.abs(finalSecondPoint.y - point.y) + 2);
}
}