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%2Fdnd%2FDragPainter.java;h=3a7609b947ece077c2fcee878b20cec5675a3d6f;hp=3ebccf136a158e8fd9295f4cb9fe6a89f37b0059;hb=5a370e0b751e60f36445716bef0cb2485c5fc7ef;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/dnd/DragPainter.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/dnd/DragPainter.java index 3ebccf136..3a7609b94 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/dnd/DragPainter.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/dnd/DragPainter.java @@ -21,6 +21,7 @@ import org.simantics.g2d.canvas.impl.AbstractCanvasParticipant; import org.simantics.g2d.canvas.impl.SGNodeReflection.SGCleanup; import org.simantics.g2d.canvas.impl.SGNodeReflection.SGInit; import org.simantics.g2d.diagram.DiagramHints; +import org.simantics.g2d.element.ElementHints; import org.simantics.g2d.participant.TransformUtil; import org.simantics.scenegraph.g2d.G2DParentNode; import org.simantics.scenegraph.g2d.IG2DNode; @@ -31,6 +32,8 @@ import org.simantics.scenegraph.g2d.nodes.SingleElementNode; import org.simantics.scenegraph.g2d.snap.ISnapAdvisor; import org.simantics.utils.datastructures.context.IContext; import org.simantics.utils.datastructures.context.IContextListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This participant paints an array of icons of a drag operation. @@ -38,6 +41,7 @@ import org.simantics.utils.datastructures.context.IContextListener; * @author Toni Kalajainen */ public class DragPainter extends AbstractCanvasParticipant { + private static final Logger LOGGER = LoggerFactory.getLogger(DragPainter.class); // Priority of drag event, eats ecs key public final static int DRAG_EVENT_PRIORITY = Integer.MAX_VALUE - 1500; public final static int DRAG_PAINT_PRIORITY = Integer.MAX_VALUE - 1100; @@ -185,10 +189,14 @@ public class DragPainter extends AbstractCanvasParticipant { Point2D pos = dropCtx.getItemPosition(item); if(pos != null) { // Position can (or at least seems to be) be null on the first frame AffineTransform subt = AffineTransform.getTranslateInstance(pos.getX(), pos.getY()); + AffineTransform at = item.getHintContext().getHint(ElementHints.KEY_TRANSFORM); + if (at != null) { + subt.concatenate(at); + } IG2DNode itemHolder = node.getNode(""+item.hashCode()); if (itemHolder != null && !(itemHolder instanceof SingleElementNode)) { - System.err.println("BUG: item hash codes collide within the dragged item context - found unrecognized item " + itemHolder + " with node id '" + item.hashCode() + "'"); + LOGGER.error("BUG: item hash codes collide within the dragged item context - found unrecognized item " + itemHolder + " with node id '" + item.hashCode() + "'"); continue; }