X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Fdiagram%2Fhandler%2FPickRequest.java;h=265caa805b604210e12612d49b22a2126ada9c35;hp=a43e8350a15b2aeff8c2f155558d4cd93b5aa72b;hb=refs%2Fchanges%2F64%2F1964%2F9;hpb=b75a6bbcc34a3e88f94d04d0389ed0d2e37b6511 diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/PickRequest.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/PickRequest.java index a43e8350a..265caa805 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/PickRequest.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/PickRequest.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import org.simantics.g2d.canvas.ICanvasContext; import org.simantics.g2d.connection.handler.ConnectionHandler; import org.simantics.g2d.element.IElement; import org.simantics.g2d.element.handler.BendsHandler; @@ -50,6 +51,12 @@ public class PickRequest { public PickFilter pickFilter = null; public PickSorter pickSorter = null; + /** + * Used to optimize picking if provided via R-tree traversal to find + * intersecting elements, not everything. + */ + public ICanvasContext pickContext; + public PickRequest(double x, double y) { pickArea = new Rectangle2D.Double(x, y, 1, 1); @@ -67,6 +74,11 @@ public class PickRequest { pickArea = GeometryUtils.transformShape(shape, transform); } + public PickRequest context(ICanvasContext ctx) { + this.pickContext = ctx; + return this; + } + public static interface PickFilter { boolean accept(IElement e);