]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/participant/pointertool/PointerInteractor.java
Merge "Debug logging through SLF4J Logger for Expressions"
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / diagram / participant / pointertool / PointerInteractor.java
index 33b4402db56b46dfc738a5aea43f17445133318d..4f9df238f4b602ec6e95798570ad2cbbb154f04a 100644 (file)
@@ -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<IElement> pick         = new ArrayList<IElement>();
         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<IElement>  picks           = new ArrayList<IElement>();
         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);