diff --git a/eraser-base/src/main/jastadd/Item.jrag b/eraser-base/src/main/jastadd/Item.jrag index 18e11cb4d2800f424acb71ff82f725c955844855..6ccdfb4997be0f0301f4ac1e8a9f07ce00671c12 100644 --- a/eraser-base/src/main/jastadd/Item.jrag +++ b/eraser-base/src/main/jastadd/Item.jrag @@ -137,9 +137,10 @@ aspect ItemHandling { //--- setStateFromBoolean --- public abstract void Item.setStateFromBoolean(boolean value); public void ColorItem.setStateFromBoolean(boolean value) { - if (getState().getBrightness()==0) { - setBrightness(value ? 100 : 0); + if (getState()!=null && getState().getBrightness()!=0 && value) { + return; } + setBrightness(value ? 100 : 0); } public void DateTimeItem.setStateFromBoolean(boolean value) { // there is no good way here diff --git a/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java b/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java index af5fe99fff7d996db081a53603c913eae81e0ea5..289ee0eccd58cd6ebc695842c49d4de4f8ee48a5 100644 --- a/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java +++ b/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java @@ -102,10 +102,10 @@ public class ControllingItemTest { assertEquals("30,20,10", stringItem.getState()); assertEquals(TupleHSB.of(30, 20, 10), target.getState(), "Item was not controlled correctly"); - // boolean true -> set brightness to full (100) + // boolean true -> brightness should still be 10 because it's already turned on booleanItem.setState(true); assertTrue(booleanItem.getState()); - assertEquals(TupleHSB.of(30, 20, 100), target.getState(), "Item was not controlled correctly"); + assertEquals(TupleHSB.of(30, 20, 10), target.getState(), "Item was not controlled correctly"); // color (33,33,33) -> set brightness to (33,33,33) colorItem.setState(TupleHSB.of(33, 33, 33));