X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2Fcomponents%2Fsubmodels%2FSubmodelComponent.java;h=67209caeec3473f59495ec842977e5692109ff9d;hb=003f739f79e66c834de27f03f73ab506ba8a8789;hp=45c36bfb236df5a3018c2518f3461ad9172356b8;hpb=a47c9b1f38bbb6d2f5a3c482f3b09d1f42270401;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java index 45c36bfb..67209cae 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java @@ -4,6 +4,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.function.Consumer; import net.haspamelodica.swt.helper.gcs.GCConfig; import net.haspamelodica.swt.helper.gcs.GeneralGC; @@ -106,11 +107,18 @@ public abstract class SubmodelComponent extends GUIComponent this.submodelInterface = new SubmodelInterface(submodelModifiable, SUBMODEL_INTERFACE_NAME); this.submodelScale = 1; - this.maxVisibleRegionFillRatioForAlpha0 = 0.4; - this.minVisibleRegionFillRatioForAlpha1 = 0.8; + this.maxVisibleRegionFillRatioForAlpha0 = 0.8; + this.minVisibleRegionFillRatioForAlpha1 = 0.9; this.renderer = new LogicUIRenderer(submodelModifiable); - submodelModifiable.addRedrawListener(this::requestRedraw); + Consumer redrawHandlerChangedListener = submodelModifiable::setRedrawHandler; + model.addRedrawHandlerChangedListener(redrawHandlerChangedListener); + model.addComponentRemovedListener(c -> + { + if (c == this) + model.removeRedrawHandlerChangedListener(redrawHandlerChangedListener); + }); + submodelModifiable.setRedrawHandler(model.getRedrawHandler()); } // pins @@ -266,7 +274,7 @@ public abstract class SubmodelComponent extends GUIComponent for (Entry e : supermodelPins.entrySet()) getSubmodelMovablePin(e.getKey()).setRelPos(e.getValue().getRelX() * submodelScale, e.getValue().getRelY() * submodelScale); - requestRedraw();// needed if there is no submodel interface pin + model.requestRedraw();// needed if there is no submodel interface pin } /** @@ -287,7 +295,7 @@ public abstract class SubmodelComponent extends GUIComponent protected void setSymbolRenderer(Renderer symbolRenderer) { this.symbolRenderer = symbolRenderer; - requestRedraw(); + model.requestRedraw(); } /** @@ -308,7 +316,7 @@ public abstract class SubmodelComponent extends GUIComponent protected void setOutlineRenderer(Renderer outlineRenderer) { this.outlineRenderer = outlineRenderer; - requestRedraw(); + model.requestRedraw(); } /**