X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Fdiagram%2Fparticipant%2Fpointertool%2FPointerInteractor.java;h=4f9df238f4b602ec6e95798570ad2cbbb154f04a;hb=refs%2Fchanges%2F64%2F1964%2F9;hp=33b4402db56b46dfc738a5aea43f17445133318d;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/participant/pointertool/PointerInteractor.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/participant/pointertool/PointerInteractor.java index 33b4402db..4f9df238f 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/participant/pointertool/PointerInteractor.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/participant/pointertool/PointerInteractor.java @@ -307,7 +307,7 @@ public class PointerInteractor extends AbstractDiagramParticipant { Shape canvasPickRect = getCanvasPickShape(controlPos); if (canvasPickRect == null) return Collections.emptyList(); - return TerminalUtil.pickTerminals(diagram, canvasPickRect, true, true); + return TerminalUtil.pickTerminals(getContext(), diagram, canvasPickRect, true, true); } public TerminalInfo pickTerminal(Point2D controlPos) @@ -315,7 +315,7 @@ public class PointerInteractor extends AbstractDiagramParticipant { Shape canvasPickRect = getCanvasPickShape(controlPos); if (canvasPickRect == null) return null; - TerminalInfo ti = TerminalUtil.pickTerminal(diagram, canvasPickRect); + TerminalInfo ti = TerminalUtil.pickTerminal(getContext(), diagram, canvasPickRect); return ti; } @@ -421,7 +421,7 @@ public class PointerInteractor extends AbstractDiagramParticipant { Shape canvasPickRect = GeometryUtils.transformShape(controlPickRect, util.getInverseTransform()); int selectionId = me.mouseId; - PickRequest req = new PickRequest(canvasPickRect); + PickRequest req = new PickRequest(canvasPickRect).context(getContext()); req.pickPolicy = PickPolicy.PICK_INTERSECTING_OBJECTS; req.pickSorter = pickSorter; //req.pickSorter = PickRequest.PickSorter.CONNECTIONS_LAST; @@ -472,6 +472,8 @@ public class PointerInteractor extends AbstractDiagramParticipant { } return false; } + + boolean result = false; // Click Select { @@ -511,6 +513,8 @@ public class PointerInteractor extends AbstractDiagramParticipant { if (!Collections.singleton(selectedPick).equals(currentSelection) && (isLeft || (isRight && !currentSelection.contains(selectedPick)))) { selection.setSelection(selectionId, selectedPick); + // Stop propagation + result = true; } if (isRight && pickables.size() == 1 && noModifiers) { @@ -518,7 +522,7 @@ public class PointerInteractor extends AbstractDiagramParticipant { } } - return false; + return result; } /** @@ -588,7 +592,7 @@ public class PointerInteractor extends AbstractDiagramParticipant { Shape canvasPickRect = GeometryUtils.transformShape(controlPickRect, util.getInverseTransform()); int selectionId = me.mouseId; - PickRequest req = new PickRequest(canvasPickRect); + PickRequest req = new PickRequest(canvasPickRect).context(getContext()); req.pickPolicy = PickPolicy.PICK_INTERSECTING_OBJECTS; List pick = new ArrayList(); pickContext.pick(diagram, req, pick); @@ -637,7 +641,7 @@ public class PointerInteractor extends AbstractDiagramParticipant { assertDependencies(); Point2D curCanvasPos = util.controlToCanvas(me.controlPosition, curCanvasDragPos); - PickRequest req = new PickRequest(me.startCanvasPos); + PickRequest req = new PickRequest(me.startCanvasPos).context(getContext()); req.pickPolicy = PickRequest.PickPolicy.PICK_INTERSECTING_OBJECTS; List picks = new ArrayList(); pickContext.pick(diagram, req, picks); @@ -648,7 +652,7 @@ public class PointerInteractor extends AbstractDiagramParticipant { double pickDist = getPickDistance(); Rectangle2D controlPickRect = new Rectangle2D.Double(me.controlPosition.getX()-pickDist, me.controlPosition.getY()-pickDist, pickDist*2+1, pickDist*2+1); Shape canvasPickRect = GeometryUtils.transformShape(controlPickRect, util.getInverseTransform()); - req = new PickRequest(canvasPickRect); + req = new PickRequest(canvasPickRect).context(getContext()); req.pickPolicy = PickRequest.PickPolicy.PICK_INTERSECTING_OBJECTS; pickContext.pick(diagram, req, picks); //System.out.println("2nd try: " + picks);