X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2FLogicUICanvas.java;h=115605f148450c1192a342dcc115d2f55d2f08d2;hb=d6d5c48722671ccc034011d9eba468b23ee53e80;hp=2c82d133a205fd11d2ddaef7c2c0171309096bce;hpb=a47c9b1f38bbb6d2f5a3c482f3b09d1f42270401;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java index 2c82d133..115605f1 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java @@ -2,6 +2,7 @@ package net.mograsim.logic.model; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; @@ -41,7 +42,7 @@ public class LogicUICanvas extends ZoomableCanvas public LogicUICanvas(Composite parent, int style, ViewModel model) { - super(parent, style); + super(parent, style, Preferences.current().getBoolean("net.mograsim.logic.model.improvetext")); this.model = model; @@ -53,7 +54,7 @@ public class LogicUICanvas extends ZoomableCanvas setBackground(background);// this.setBackground, not gc.setBackground to have the background fill the canvas renderer.render(gc, new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom)); }); - model.addRedrawListener(this::redrawThreadsafe); + model.setRedrawHandler(this::redrawThreadsafe); addListener(SWT.MouseDown, this::mouseDown); @@ -83,8 +84,14 @@ public class LogicUICanvas extends ZoomableCanvas Combo componentSelector = new Combo(debugShell, SWT.DROP_DOWN | SWT.READ_ONLY); componentSelector.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); List componentsByItemIndex = new ArrayList<>(); - model.addComponentAddedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); - model.addComponentRemovedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); + Consumer compsChanged = c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model); + model.addComponentAddedListener(compsChanged); + model.addComponentRemovedListener(compsChanged); + debugShell.addListener(SWT.Dispose, e -> + { + model.removeComponentAddedListener(compsChanged); + model.removeComponentRemovedListener(compsChanged); + }); recalculateComponentSelector(componentsByItemIndex, componentSelector, model); new Label(debugShell, SWT.NONE).setText("Target state ID: "); Text stateIDText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER);