X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2FLogicUICanvas.java;h=4afa67ddbecd972664ef734e3cc70c01101e8f43;hb=0a97b3e3d138ecaf4dd6351663876502f841fd25;hp=f94a047bd318dd127ea43b7adff3649268bbcfa7;hpb=c1a22b1d26c98afab4d5666e77ef870fd5d54396;p=Mograsim.git diff --git a/LogicUI/src/era/mi/gui/LogicUICanvas.java b/LogicUI/src/era/mi/gui/LogicUICanvas.java index f94a047b..4afa67dd 100644 --- a/LogicUI/src/era/mi/gui/LogicUICanvas.java +++ b/LogicUI/src/era/mi/gui/LogicUICanvas.java @@ -1,5 +1,7 @@ package era.mi.gui; +import java.util.function.Consumer; + import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; @@ -27,9 +29,34 @@ public class LogicUICanvas extends ZoomableCanvas this.model = model; - model.addComponentAddedListener(c -> redrawThreadsafe()); + Consumer redrawConsumer = o -> redrawThreadsafe(); + Consumer pinAddedListener = p -> + { + p.addPinMovedListener(redrawConsumer); + redrawThreadsafe(); + }; + Consumer pinRemovedListener = p -> + { + p.removePinMovedListener(redrawConsumer); + redrawThreadsafe(); + }; + model.addComponentAddedListener(c -> + { + c.addComponentChangedListener(redrawConsumer); + c.addComponentMovedListener(redrawConsumer); + c.addPinAddedListener(pinAddedListener); + c.addPinRemovedListener(pinRemovedListener); + redrawThreadsafe(); + }); + model.addComponentRemovedListener(c -> + { + c.removeComponentChangedListener(redrawConsumer); + c.removeComponentMovedListener(redrawConsumer); + c.removePinAddedListener(pinAddedListener); + c.removePinRemovedListener(pinRemovedListener); + redrawThreadsafe(); + }); model.addWireAddedListener(c -> redrawThreadsafe()); - model.addComponentRemovedListener(c -> redrawThreadsafe()); model.addWireRemovedListener(c -> redrawThreadsafe()); addZoomedRenderer(gc ->